Commit Graph

35366 Commits

Author SHA1 Message Date
Lioncash a5bbeb721a ExpressionParser: Mark constructors explicit where applicable
Makes for consistency with the surrounding code.
2023-12-12 14:00:27 -05:00
Lioncash ea71a76ea9 ExpressionParser: Pass control qualifiers by const reference
These aren't necessarily cheap to copy, since a control qualifier will
have around 3 std::strings inside of it, so passing by value can churn
allocations a little bit.
2023-12-12 13:50:46 -05:00
Lioncash 9aea481e59 ExpressionParser: Make use of std::erase_if 2023-12-12 13:31:58 -05:00
Lioncash 196f8e5123 MappingCommon: Make use of std::erase_if 2023-12-12 13:31:18 -05:00
Lioncash 888a8692b4 SysConf: Make use of std::erase_if 2023-12-12 13:30:39 -05:00
Lioncash 01d15994fe PatchEngine: Make use of std::erase 2023-12-12 13:30:08 -05:00
Lioncash e69ac2d43e Socket: Make use of std::erase_if 2023-12-12 13:29:33 -05:00
Lioncash 96eac73d11 NetKDRequest: Make use of std::erase 2023-12-12 13:27:54 -05:00
Lioncash e7f7dde546 Formats: Make use of std::erase_if 2023-12-12 13:27:17 -05:00
Lioncash df227aa03c I2CBus: Make use of std::erase_if 2023-12-12 13:26:47 -05:00
Lioncash ff0e7fbf08 GeckoCodeConfig: Make use of std::erase_if 2023-12-12 13:26:16 -05:00
Lioncash 84ae0c1c7e ActionReplay: Make use of std::erase_if 2023-12-12 13:25:26 -05:00
Lioncash 50e4dc5dba Watches: Make use of std::erase_if 2023-12-12 13:24:40 -05:00
Lioncash b728e37086 RiivolutionParser: Remove usages of global system accessor
We can retrieve the encompassing system instance through the
CPUThreadGuard instance instead.
2023-12-12 12:48:40 -05:00
Lioncash c2e39e0d68 RiivolutionParser: Make use of std::span where applicable
The main interface for these only take in patches and iterate over them
in a contiguous sequence, so we can reasonably generify the interface.
2023-12-12 12:38:43 -05:00
iwubcode b69d336838 VideoCommon: update shader asset to provide a variant default value 2023-12-12 00:01:22 -06:00
Lioncash 4c7a4831cb CustomAssetLibrary: Remove unused GetAssetSize() function
There's a direct analogue of this function within
DirectFilesystemAssetLibrary that *is* used, however, so we can get rid
of this one.
2023-12-11 22:00:52 -05:00
Admiral H. Curtiss 2c6bf2d224
Merge pull request #12394 from lioncash/compare
General: Resolve -Wsign-compare warnings
2023-12-12 03:43:12 +01:00
Lioncash e011c3b383 Core/SyncIdentifier: Default operator==
Lets us remove a bunch of code and a dependency on the <tuple> header.
2023-12-11 19:39:55 -05:00
Tilka 6699acf10c
Merge pull request #12386 from lioncash/setting
Common/SettingsHandler: Minor convenience changes
2023-12-12 00:02:21 +00:00
Lioncash 4229d76ad6 VertexLoaderTest: Resolve -Wdangling-else warnings
The ways the assertion macros expand end up generating -Wdangling-else
warnings. Trivial enough to fix by just bracing the if statements.
2023-12-11 18:45:25 -05:00
Admiral H. Curtiss f04d834e8f
Merge pull request #12393 from lioncash/tls
DolphinQT/Host: Remove unused TLS variable tls_is_host_thread
2023-12-12 00:29:21 +01:00
Lioncash 0e51c0f8fc JitArm64_RegCache: Resolve -Wsign-compare warning 2023-12-11 18:15:50 -05:00
Lioncash 4c3a5eb1c5 JitArm64_SystemRegisters: Resolve -Wsign-compare warning 2023-12-11 18:11:34 -05:00
Lioncash 017b9a0af7 FloatUtilsTest: Resolve -Wsign-compare warning 2023-12-11 18:08:52 -05:00
Lioncash 4bef3b93b4 AndroidCommon: Resolve -Wsign-compare warning 2023-12-11 18:06:40 -05:00
Lioncash f97316a1e6 TraversalClient: Resolve -Wsign-compare warning 2023-12-11 18:01:29 -05:00
Lioncash 49f44c1334 VertexManagerBase: Resolve -Wsign-compare warning 2023-12-11 18:00:34 -05:00
Admiral H. Curtiss b48af86148
Merge pull request #12390 from lioncash/string
GraphicsModListWidget: Add string specifier to By and Description fields
2023-12-11 23:47:53 +01:00
Admiral H. Curtiss 4f02f526b8
Merge pull request #12392 from lioncash/decl
General: Resolve -Wmissing-declaration warnings
2023-12-11 23:39:23 +01:00
Admiral H. Curtiss 54301d709a
Merge pull request #12389 from lioncash/cheeve
AchievementManager: Make GetInstance() and GetLock() return a reference
2023-12-11 23:37:29 +01:00
Lioncash f490b990f5 DolphinQT/Host: Remove unimplemented prototypes
Remnants of prior existing code.
2023-12-11 17:30:56 -05:00
Lioncash d705c31d1a DolphinQT/Host: Remove unused TLS variable tls_is_host_thread
This is never accessed or read from.
2023-12-11 17:27:57 -05:00
Admiral H. Curtiss 16ba56a34b
Merge pull request #12388 from lioncash/compare
GameFile: Default GameBanner operator==
2023-12-11 23:25:27 +01:00
Lioncash e8b4796273 PostProcessing: Mark helper functions as static
These didn't have any prototypes and were generating
-Wmissing-declaration warnings.
2023-12-11 17:07:59 -05:00
Lioncash abb5cc3a3a ShaderAsset: Mark ParseShaderProperties() as static
This had no function prototype, so this can be internally linked.

Resolves a -Wmissing-declaration warning.
2023-12-11 17:05:06 -05:00
Lioncash b4b624b97b WC24PatchEngine: Mark LoadPatches() as static
Resolves a -Wmissing-declaration warning, since no prototype existed for
the function.
2023-12-11 17:02:15 -05:00
Lioncash 2b2ee61e79 CustomShaderCache: Resolve -Wreorder warnings
Lays out the initializer lists to be in the same order that
initialization would occur in.
2023-12-11 16:59:03 -05:00
Lioncash 9472da788d ConfigFloatSlider: Resolve -Wreorder warnings
Orders the initializer list the way that the members would actually be
initialized in.

Resolves some -Wreorder warnings
2023-12-11 16:15:48 -05:00
Admiral H. Curtiss dd0ac7d53c
Merge pull request #12387 from lioncash/cache
GameFileCache: Pass std::function by reference rather than by value
2023-12-11 21:46:59 +01:00
Lioncash 5d1514418e GraphicsModListWidget: Add string specifier to By and Description fields
Translators should always know where text is going to be appended and
have the ability to move things around to fit the language better.
2023-12-11 15:43:41 -05:00
Lioncash d90537cc18 AchievementManager: Return by reference from GetLock()
This makes the API a little nicer to use, since you don't need to do
a mandatory dereference when passing the lock into any kind of scope
guard.
2023-12-11 13:51:50 -05:00
Lioncash 3c7fa0738c AchievementsWindow: Add missing override specifier 2023-12-11 13:47:59 -05:00
Lioncash dbf28df64c DolphinQT: Remove unnecessary includes from achievement files
Reduces the amount of dependencies being pulled in on both local and
external headers.
2023-12-11 13:40:55 -05:00
Lioncash e55f9ed102 AchievementManager: Make GetInstance() return a reference
The internal static member will always have a valid lifetime. Makes this
consistent with other instance based objects in our code.
2023-12-11 13:36:39 -05:00
JosJuice f87a4f0385
Merge pull request #12383 from iwubcode/android_new_sdk_for_cpp20
Android: update NDK to 26.1.10909125 in order to pick up new compiler features
2023-12-11 19:16:32 +01:00
Lioncash cdf8849e17 GameFile: Default GameBanner operator==
Same behavior, but less code.
2023-12-11 11:36:35 -05:00
Lioncash ff38362216 GameFileCache: Use std::span with Update()
All we're really doing is iterating over a sequence of strings, so we
don't need to tie this specifically to std::vector.
2023-12-11 11:12:09 -05:00
Lioncash 2ca80adeb2 GameFileCache: Pass std::function by reference rather than by value
std::function is internally allowed to allocate, and these functions
aren't being stored anywhere (only called), so we can freely get rid
of some minor overhead here by passing by reference.

This change also creates aliases for the functions, so that there isn't
a lot of visual noise when reading the function signatures.
2023-12-11 11:09:18 -05:00
Lioncash 88a973131c Common/SettingsHandler: Use std::string_view more
We don't need to enforce the use of std::string instances with
AddSetting(). We can accept views and only construct one string,
rather than three temporaries.
2023-12-11 07:54:43 -05:00
Lioncash 04b9f6c28d Common/SettingsHandler: Use std::erase in Decrypt()
Same behavior, way less verbose code.
2023-12-11 07:49:43 -05:00
Mai d84ed054ee
Merge pull request #12374 from iwubcode/custom_texture_potential_crash_fix
VideoCommon: prevent a potential custom texture crash
2023-12-11 07:42:48 -05:00
Admiral H. Curtiss 694b3b4ea1
HW/CEXIIPL: Fix loading files at nonzero offset in LoadFileToIPL(). 2023-12-11 02:22:06 +01:00
Mai c2b642d0b7
Merge pull request #12381 from AdmiralCurtiss/re-enable-achievement-nag
AchievementManager: Only nag user about disabled achievements when they were actually enabled before.
2023-12-10 20:16:24 -05:00
Mai bdd28f1f26
Merge pull request #12378 from JosJuice/jitarm64-a-early-discard
JitArm64: Add additional condition for lmw/stmw a discard
2023-12-10 20:15:57 -05:00
iwubcode b27cf432eb Android: update NDK to 26.1.10909125 in order to pick up new compiler with more C++20 features 2023-12-10 19:14:29 -06:00
iwubcode 3658d3bffe VideoCommon: add ability to serialize graphics mod to json object 2023-12-10 18:29:21 -06:00
iwubcode ac862b04ab VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16, this allows us to support more samplers than the native Wii/GC 2023-12-10 18:14:02 -06:00
Admiral H. Curtiss 70cd0040a3
AchievementManager: Only nag user about disabled achievements when they were actually enabled before. 2023-12-10 21:10:49 +01:00
JosJuice c55f21729f Add "large entry points map" setting
To aid in debugging, this makes it possible to disable the recently
added 32/64 GiB region which hasn't had a proper name so far.
2023-12-10 21:07:27 +01:00
JosJuice 0ec12f9e7e JitArm64: Add additional condition for lmw/stmw a discard
If a is one of the registers that will be loaded/stored, we must not
discard it early. Sorry for this fixup of a fixup...
2023-12-10 19:13:35 +01:00
Mai db1620db42
Merge pull request #12377 from JosJuice/jitarm64-a-d-discard-guard
JitArm64: Guard against discarding a in lmw/stmw
2023-12-10 12:19:41 -05:00
JosJuice 13a4f1b799 JitArm64: Guard against discarding a in lmw/stmw
If a_is_addr_base_reg is true, discarding a before the end of the
instruction would result in the instruction being miscompiled.
2023-12-10 17:58:15 +01:00
OatmealDome d272b0ef84
Merge pull request #12183 from t895/gradle-kotlin-dsl
Android: Gradle updates
2023-12-10 11:17:56 -05:00
Lioncash f4b1a199e8 VFFUtil: Use std::span with WriteToVFF
Same behavior, but allows different containers to be used.

In one case it also gets rid of needing to construct a std::vector.
2023-12-10 10:17:39 -05:00
Mai e2472e4f50
Merge pull request #12352 from JosJuice/jitarm64-flush-in-long-inst
JitArm64: Flush in the middle of lmw/stmw/mfcr
2023-12-10 09:15:07 -05:00
Mai f249e414ad
Merge pull request #12366 from AdmiralCurtiss/exi-ipl-fixes
HW/CEXIIPL: Various fixes.
2023-12-10 09:12:18 -05:00
Admiral H. Curtiss a0da6788a3
MMU: Use MSR.IR for instruction reads. 2023-12-10 14:18:25 +01:00
Admiral H. Curtiss c12725c916
MMU: Assert that the given XCheckTLBFlag is valid for the operation. 2023-12-10 14:18:25 +01:00
Admiral H. Curtiss 0d6a0724fd
MMU: Always use data read for the PTE lookup in TranslatePageAddress. 2023-12-10 14:18:24 +01:00
Admiral H. Curtiss 5d2fc0147e
MMU: Mark IsOpcodeFlag() and IsNoExceptionFlag() as constexpr. 2023-12-10 14:18:24 +01:00
Admiral H. Curtiss 8194b53166
HW/CEXIIPL: Check for errors when reading font. 2023-12-10 14:17:38 +01:00
Admiral H. Curtiss 57e166dbef
HW/CEXIIPL: Consider that the loaded file may not actually contain a nullterminated string. 2023-12-10 14:17:37 +01:00
Admiral H. Curtiss 7d53916466
HW/CEXIIPL: Respect bounds in LoadFileToIPL(). 2023-12-10 14:17:37 +01:00
Admiral H. Curtiss f284bfca45
Merge pull request #12336 from AdmiralCurtiss/lazymemory-ringbuffer
Common/MemArenaWin: Rewrite LazyMemoryRegion by repeatedly mapping the same block of memory for unwritten regions.
2023-12-10 13:00:09 +01:00
JosJuice ab4f4c62ee Android: Fix crash when trying to edit gate size setting
The gate size is 79.37125 by default, and the step size is 0.5. Android
throws an exception if we try to show the slider with the value set to
something that isn't divisible by the step size. To avoid this problem,
round the value.
2023-12-10 10:49:16 +01:00
iwubcode 02756be381 VideoCommon: prevent a potential custom texture crash that can occur when a shared_ptr gets released while a pointer to its member data is still being used 2023-12-09 23:43:40 -06:00
Admiral H. Curtiss ccedeb4936
Merge pull request #12373 from lioncash/present
VideoCommon/Present: Remove use of g_presenter inside Presenter class
2023-12-10 03:55:30 +01:00
Lioncash 0df7908025 VideoCommon/Present: Remove use of g_presenter inside Presenter class
There's no need to self reference a global of the class itself when we
can just call the function directly.
2023-12-09 20:15:32 -05:00
Lioncash 5f6c76af51 VideoCommon: Use std::span for BoundingBox::Write()
Crosses off a lingering TODO.

Also amends a few nearby cases where a u32 cast was being repromoted to
size_t.
2023-12-09 16:33:21 -05:00
Charles Lombardo 93a5df3b92 android: Compile and target Android 14 2023-12-09 15:44:29 -05:00
Charles Lombardo 5d2e3de576 android Update dependencies 2023-12-09 15:44:29 -05:00
Charles Lombardo c5d81c1006 android: Regenerate baseline profile module for AGP 8.2.0 2023-12-09 15:44:29 -05:00
Charles Lombardo 7d4db6603b android: Update AGP to 8.2.0
Also updates gradle to 8.2 as that is the minimum required version for AGP 8.2.0
2023-12-09 15:44:29 -05:00
Admiral H. Curtiss 3364d571cc
Common/MemArenaWin: Rewrite LazyMemoryRegion to manually map memory blocks into the large memory region as needed.
Internal details: The large region is split into individual same-sized blocks of memory. On creation, we allocate a single block of memory that will always remain zero, and map that into the entire memory region. Then, the first time any of these blocks is written to, we swap the mapped zero block out with a newly allocated block of memory. On clear, we swap back to the zero block and deallocate the data blocks. That way we only actually allocate one zero block as well as a handful of real data blocks where the JitCache actually writes to.
2023-12-09 21:11:31 +01:00
Admiral H. Curtiss eb235d6ee3
Common/MemArenaWin: Move the advanced Windows memory function address initialization into its own struct and function so it can be reused. 2023-12-09 20:58:07 +01:00
Charles Lombardo 001089dbf4 android: Convert gradle files to kotlin gradle dsl 2023-12-09 14:57:09 -05:00
Charles Lombardo 57b33e9142 android: Remove benchmark module 2023-12-09 14:57:09 -05:00
t895 42a4630245 Android: Allow Coil image cache to use more memory
Allows the Coil memory cache to use up to 90% of the application's available memory. Previously this could cause problems with reloading images in very large libraries of games.
2023-12-09 14:55:58 -05:00
Admiral H. Curtiss 6197902dc3
IOS/KD/Mail: Add missing includes. 2023-12-09 17:07:03 +01:00
Mai dd227fea5a
Merge pull request #12364 from JosJuice/android-emulation-settings-reload
Android: Fix crash after process recreation
2023-12-08 21:24:05 -05:00
Mai 636b892b7c
Merge pull request #12360 from TryTwo/bugfix_wiimote_signal_spam
WiimoteDevice. Bugfix. Remove signal spam while starting a game.
2023-12-08 21:07:51 -05:00
timetravelthree 3b8737d2d7
Fix out of bound write in EfbCopy::ClearEfb 2023-12-09 02:15:42 +01:00
JosJuice a4eff2acc1 Android: Don't call Run before directory initialization
Combined with the previous commits, this finally fixes the bug where
Dolphin had a chance of crashing if you returned to it after Android
killed the Dolphin process.
2023-12-08 19:36:11 +01:00
JosJuice a31214b8c6 Android: Fix EmulationActivity's handling of process recreation 2023-12-08 19:31:12 +01:00
JosJuice 5aa80603d7 Android: Reload EmulationActivity settings on title change
This way, we ensure that game INI settings are properly applied. I don't
think we actually expose the affected settings on a per-game basis in
the UI, but still.
2023-12-08 17:57:30 +01:00
JosJuice 11041e950d Android: Combine reading cutout setting with updateOrientation 2023-12-08 17:56:29 +01:00
CasualPokePlayer 13bf75b1df Add SYSCONF widescreen setting to dtm header 2023-12-08 01:27:57 -08:00
LillyJadeKatrin e992225b88 Bugfix - small square in bottom right corner
Fixed a bug in OSUI created by the challenge icons that caused a small rectangle to appear in the bottom right corner of the screen.
2023-12-08 00:33:29 -05:00
Mai e0f4111561
Merge pull request #11663 from JosJuice/android-config-change-callback
Android: Use config changed callback for tracking recursive scan setting
2023-12-07 16:48:02 -05:00
Mai 3a4cf579ff
Merge pull request #12247 from LillyJadeKatrin/retroachievements-challenges
RetroAchievements - Challenge Icons
2023-12-07 16:46:43 -05:00
LillyJadeKatrin caa729f84a Display Active Challenges On Screen
The active challenges, aka the primed achievements, are displayed on screen as a series of icons in the bottom right corner of the screen via OnScreenUI.
2023-12-07 16:02:15 -05:00
JosJuice 4203632c93 Android: Improve GameFileCacheManager comments 2023-12-07 21:09:17 +01:00
JosJuice 3e7a16f225 Android: Use config changed callback for tracking recursive scan setting
This way the Settings class doesn't contain a hardcoded reference to
a specific setting. And Settings.loadSettings no longer calls
getBoolean, which is a step towards fixing the crash when recreating
EmulationActivity after process death.
2023-12-07 21:09:17 +01:00
JosJuice d80f9d53fc Android: Expose config changed callbacks 2023-12-07 21:09:17 +01:00
TryTwo 6bd9488e0a WiimoteDevice. bugfix. Remove signal spam while starting a game.
Emulation state changed signals also update the wiimote connection. The signal here is only needed for wiimote connects/disconnects.

Can fix erroneous debugger behavior during booting, as dolphin will sometimes incorrectly report the state as paused, which leads the debugger widgets to run when they shouldn't.
2023-12-07 12:15:57 -07:00
rsgnz 8c973188ef Fix "Post-processing shader not found" when (off) is selected. (2nd version) 2023-12-07 11:26:31 +01:00
Mai 2ece642cf8
Merge pull request #12357 from AdmiralCurtiss/ipl-bounds
Core/Boot: Check bounds in Load_BS2().
2023-12-06 19:57:26 -05:00
LillyJadeKatrin 8fbc5960e7 Handle Achievement Un/Primed Events
When an achievement is "primed", a challenge is active, for example completing a portion of the game in under a time limit or without taking damage or using certain items. This is stored in a map in the Achievement Manager (and removed when the achievement is unprimed) so a later commit can display it on screen.
2023-12-06 08:21:06 -05:00
Admiral H. Curtiss fff538e563
Core/Boot: Check bounds in Load_BS2(). 2023-12-05 22:34:35 +01:00
LillyJadeKatrin 2bf6ebcb90 Added achievement hash to non-disc boot paths. 2023-12-05 16:17:18 -05:00
LillyJadeKatrin ebf2ef1d82 Refactored hash process to check prior game ID
If the new game ID is a different title than the previous game ID, the achievement manager is compromised.
2023-12-05 16:17:18 -05:00
LillyJadeKatrin c8d8ca2ff7 Added Disabled flag to Achievement Manager
The Disabled state sits between Game Closed and completely Shutdown - stronger than the former, as it refuses to let a game be opened again until AchievementManager is restored (which only happens upon a fresh core boot) but it isn't completely shut down and will still allow the player to be logged in and access the achievement settings and their (global) achievement header.
2023-12-05 16:17:17 -05:00
LillyJadeKatrin 148c2f3c0d Refactored AchievementManager hash code to take a volume.
This change splits LoadGameAsync into three methods: two HashGame methods to accept either a string filepath or a volume, and a common LoadGameSync that both HashGames call to actually process the code. In the process, some minor cleanup, and the hash resolution now takes place on the work queue asynchronously.
2023-12-05 16:17:11 -05:00
Mai a65246ec3f
Merge pull request #11988 from JosJuice/jit-feature-flags
Jit: Replace "msrBits" with "featureFlags" and use for performance monitor
2023-12-05 03:13:50 -05:00
Mai 2199dd26bb
Merge pull request #12345 from minhaferzz/startup-handler
Android: Fix issue when launching a game when Dolphin is not open
2023-12-05 03:10:41 -05:00
Mai 6e6695c24b
Merge pull request #11904 from LillyJadeKatrin/retroachievements-hardcore-v2
RetroAchievements - Hardcore Mode (V2)
2023-12-05 01:31:54 -05:00
Tilka 7dfea144b9
Merge pull request #12324 from Pokechu22/vertex-loader-dummy-tex-coords
VertexLoader: Fixes and cleanup related to skipped components
2023-12-04 13:06:19 +00:00
iwubcode e204b3c8ee VideoCommon: add additional data types (int, int2, float, bool, etc) as properties of materials and some helper functions to support sending the data to the GPU 2023-12-04 00:12:31 -06:00
Pokechu22 1c62ebc9fb Use ExtensionNumber in Movie.cpp 2023-12-03 11:36:54 -08:00
JosJuice 8368a397ee JitArm64: Flush in the middle of lmw/stmw/mfcr
Normally we only flush registers right at the end of each PPC
instruction. However, for PPC instructions that use a lot of registers
one at a time, it's beneficial to do this flushing work in the middle
of the instruction instead, reducing the risk of register starvation
and improving pipelining.
2023-12-03 18:42:42 +01:00
Mai 27be8c087e
Merge pull request #12295 from sepalani/arp-check
BBA/HLE: Fix GC homebrew if_config not working
2023-12-03 11:26:00 -05:00
Mai 98eda4dc9f
Merge pull request #12351 from TryTwo/bugfix_data_symbols
PPCSymbolDB. Bugfix. Fix .data symbols not loading
2023-12-03 11:17:44 -05:00
JosJuice 05864ceddd PPCAnalyst: Clear crInUse on HLE
This should have been done when rebasing 6cc4f593e5 after the merge of
3a00ff625e. There are no correctness implications as far as I know,
only very minor performance implications.
2023-12-03 14:20:45 +01:00
TryTwo 92532c8d3a PPCSymbolDB. Bugfix. Fix .data symbols not loading, unless they were aligned to 4 bytes.
.data symbols point to memory values and can be any byte or length of bytes (such as a string).
2023-12-03 00:03:28 -07:00
Pokechu22 69cf8b3470 VertexLoader: Use Common::SmallVector 2023-12-02 15:54:52 -08:00
Pokechu22 4116344785 VertexLoader: Remove unnecessary calls to VertexLoader_TextCoord::GetDummyFunction 2023-12-02 15:54:52 -08:00
Pokechu22 36796abc08 VertexLoader: Fix wrong array being used if color 1 is present but color 0 isn't
This worked correctly on the JIT vertex loaders, and for the equivalent case with texture coordinates. I'm not aware of any games this affects (but libogc does mention a semi-related scenario at 6bc0317c7d/gc/ogc/gx.h (L1855-L1857).)
2023-12-02 15:54:52 -08:00
Pokechu22 1ee6824324 VertexLoaderTest: Add test for skipped texture coordinates
Jimmie Johnson's Anything with an Engine is known to use texture coordinate 7 (and only texture coordinate 7) in some cases. There are a lot of possible edge-cases, so this test brute-forces all combinations with coordinates 0, 1, and 2.
2023-12-02 15:54:52 -08:00
Pokechu22 530590d162 VertexLoaderTest: Add test for skipped colors
This test fails with the non-JIT vertex loader due to an issue fixed in a later commit in this PR. (Note that the non-JIT vertex loader is only used on machines where no JIT is available or if COMPARE_VERTEXLOADERS is enabled in VertexLoaderBase.cpp.)
2023-12-02 15:53:59 -08:00
Mai 4f3f208fe4
Merge pull request #12348 from JosJuice/jitarm64-imm-msr-fastmem
JitArm64: Fix updating MEM_REG with imm MSR without fastmem
2023-12-02 17:53:28 -05:00
LillyJadeKatrin 2cb14edafa Add Hardcore switch to Achievement Settings dialog
This adds the actual switch to turn on Hardcore Mode to the settings tab of the Achievements dialog. It is accompanied by a large tooltip warning explaining what it does and when it can be enabled.
The switch is only enabled to be turned on when no game is running, so that games are started in hardcore mode and can only be loaded via the console's memory card, as in the original hardware. Hardcore may be turned off while a game is running, but cannot be turned back on until the game is disabled.
The toggle trigger for hardcore mode also automatically disables the settings that are not allowed during hardcore mode.
Finally, the original flag in AchievementSettingsWidget to set whether things are enabled in hardcore mode (primarily Leaderboards) is replaced with the actual Hardcore Mode setting.
2023-12-02 16:41:17 -05:00
LillyJadeKatrin 6f7e02e201 Disable TAS recording playback in hardcore mode
Play Input Recording would potentially unlock achievements without any player input and needs to be disabled. If a recording is already playing, hardcore mode cannot be enabled.
2023-12-02 16:41:17 -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
LillyJadeKatrin 0abfa94bc8 Disable Freelook in hardcore mode
The player getting a better view of their surroundings than the game would normally allow could possibly give the player an advantage over the original hardware, so Freelook is disabled in hardcore mode. To do this, I disable the config flag for Freelook when it is accessed, to make sure that it is disabled whether it was enabled before or after hardcore mode was enabled.
2023-12-02 16:41:16 -05:00
LillyJadeKatrin 1a19a92943 Disable memory patches in hardcore mode
Memory patches would be an easy way to manipulate the memory needed to calculate achievement logic, so they must be disabled. Riivolution patches that do not affect memory are allowed, as they will be hashed with the game file.
2023-12-02 16:41:16 -05:00
LillyJadeKatrin cb2fa9a1f2 Disable Debug Mode in hardcore mode
Debug Mode gives players direct read and write access to memory, which could be used to completely manipulate RetroAchievements logic and therefore is not allowed in hardcore mode.
2023-12-02 16:41:16 -05:00
LillyJadeKatrin c20258d782 Disable slowdown in hardcore mode
Slowing down the emulator would artificially improve reaction times and is therefore disallowed in hardcore mode. Speeds faster than 1x are allowed, but any speed below 1x is scaled back up to 1x.
2023-12-02 16:41:16 -05:00
LillyJadeKatrin 45105822f3 Disable frame advance in hardcore mode
Frame advancing is easily exploitable for slowing down a game and artificially improving reaction times and is not allowed in RetroAchievements hardcore mode.
2023-12-02 16:41:16 -05:00
LillyJadeKatrin 2c40d6ba31 Disable loading state in hardcore mode
While saving states is allowed (especially for the purpose of debugging), RetroAchievements does not allow loading saved states when hardcore mode is on.
2023-12-02 16:41:15 -05:00
LillyJadeKatrin 71f3039f96 Added Hardcore Warning Widget
This widget will be used in several places to notify the player that a feature has been disabled because hardcore mode is on. It includes a button to open the Achievement Settings so that Hardcore Mode may be turned off. Also included is the framework required to open AchievementsWindow specifically on the Settings tab.
2023-12-02 16:41:15 -05:00
LillyJadeKatrin 138e68ef9f Added Hardcore flag to Achievement Settings
Hardcore Mode is a RetroAchievements feature for enabling as close to original hardware as possible, to keep a fair, challenging, and competitive playing field for achievements (which get tallied differently and emphasized more in hardcore) and leaderboards (where it is mandatory) at the cost of several common emulator features that provide advantages, such as state loading and slower emulation speeds.
This commit just adds the flag to the AchievementSettings, with more to come.
2023-12-02 16:41:15 -05:00
JosJuice 253afee315 JitArm64: Fix updating MEM_REG with imm MSR without fastmem
Dolphin would crash when running with a fastmem arena but without
fastmem. This regression was caused by merging 9192128c50 without
adapting it after the merge of 0606433404.
2023-12-02 17:26:33 +01:00
Admiral H. Curtiss 85f4a460f9
Merge pull request #12184 from noahpistilli/kd-mail-send
IOS/KD: Implement Send Mail
2023-12-02 17:15:56 +01:00
Admiral H. Curtiss a753022aa7
Merge pull request #12344 from noahpistilli/kd-download-time-fix
IOS/KD: Set download span if download task not found
2023-12-02 17:13:45 +01:00
Sketch e07087e43c IOS/KD: Set download span if download task not found 2023-12-01 23:15:27 -05:00
Minh Truong 4b91bf48f5 Finish parent activity after directory initializer completes
Add frontIntent flag to control activity.finish()

Moved parent activity finish inside of performLaunchChecks
2023-12-01 15:12:10 -06:00
JosJuice b1987d0187 JitArm64: Use ADDI2R for psq_lXX/psq_stXX immediate offsets
This simplifies the source code, and slightly improves the emitted code
in some cases.
2023-12-01 21:31:11 +01:00
JosJuice 67791d227c JitArm64: Add special zero case to ADDI2R
This normally doesn't reduce the instruction count, but is nonetheless
useful on CPUs that can do 0-cycle moves.
2023-12-01 21:31:11 +01:00
JosJuice 25ffb0dbfc JitArm64: Mask input to 32-bit ADDI2R
In case the input was a s32 that got sign extended as part of conversion
to u64.
2023-12-01 21:26:37 +01:00
iwubcode d57c1cbe6c Android / Core / DolphinQt: disable arbitrary mipmap detection by default, let the games that need it be enabled with a config option, there aren't many of them 2023-12-01 14:23:56 -06:00
Sketch b46fcf9032
IOS/KD: Implement Send Mail 2023-12-01 19:55:32 +01:00
Sketch 2c3d05423d
IOS/KD/VFF: Implement reading from VFF 2023-12-01 19:53:01 +01:00
Sketch 0d908a83e7
Common/HTTP: Implement Multiform 2023-12-01 19:52:21 +01:00
Mai 5f7e9d3bf1
Merge pull request #12320 from JosJuice/jitarm64-mmu-order
PowerPC: Unify "FromJit" MMU functions
2023-11-30 18:34:32 -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
Mai d67f54b175
Merge pull request #12186 from TellowKrinkle/MultiTextureComputeMetal
VideoBackends:Metal: Support multiple compute textures
2023-11-30 17:46:02 -05:00
JosJuice 94b31eb4f4 Jit: Replace MSR/MMCR access with feature_flags access
This has the same effect in the end, but in my opinion, doing it this
way makes it more clear for the reader why we can read from ppcState at
JIT time, something that makes no sense for everything else in ppcState.
2023-11-30 22:40:36 +01:00
JosJuice 62787085e1 Jit: Add feature flag for performance monitor
By making the JIT cache check if the current state of MMCR0 and MMRC1
matches the state they had at the time the JIT block was compiled, we
solve a correctness issue (marked in a comment as a speed hack).

Not known to affect any games.
2023-11-30 22:40:36 +01:00
JosJuice ca7e05bbc4 Jit: Replace "msrBits" with "featureFlags"
Preparation for the next commit.
2023-11-30 22:40:32 +01:00
JosJuice 4b50a38cf6 JitArm64: Fix JitAsm without entry points map
This must have broken in a rebase of one of my recently merged PRs.

Dolphin still worked correctly with this bug, for two reasons:

1. Most AArch64 users are not on Windows, and therefore normally do have
   the entry points map.
2. When the bug was triggered, Dolphin would fall back to the slower
   path rather than crashing.
2023-11-30 20:11:02 +01:00
TellowKrinkle 394dd02d0a VideoBackends:Metal: Support multiple compute textures 2023-11-29 18:45:11 -06:00
TellowKrinkle a399dc43a1 VideoBackends:Metal: Align utility uniform sizes
Prevents complaining from validation layers
2023-11-29 18:45:11 -06:00
Mai 89963c287c
Merge pull request #11958 from JosJuice/jitarm64-dispatcher-microopt
JitArm64: Dispatcher optimizations
2023-11-29 16:54:09 -05:00
JosJuice bddcf60673 PPCAnalyst: Don't discard CR before gather pipe interrupt check
This fixes a frequently occurring JitArm64 assert caused by merging
6cc4f593e5 without adapting it to the changes made in 5902b5b113.
2023-11-29 21:53:13 +01:00
JosJuice 06c7862160 JitArm64: Rearrange dispatcher instructions to improve scheduling
Loads can take a little while to complete.
2023-11-29 19:13:09 +01:00
JosJuice 9e970bcb30 JitArm64: Optiming shifting and masking PC in slow dispatcher
Instead of shifting left by 1, we can first shift right by 2 and then
left by 3. This is both faster and smaller, because we get the right
shift for free with the masking and the left shift for free with the
address calculation. It also happens to match the pseudocode more
closely, which is always nice for readability.
2023-11-29 19:13:09 +01:00
JosJuice c9347a2a19 JitArm64: Use LDP in slow dispatcher
With one LDP instruction, we can replace two LDR instructions.
2023-11-29 19:13:09 +01:00
JosJuice 4a4e7d9b8a Jit: Swap locations of effectiveAddress and msrBits
This slightly improves instruction-level parallelism in Jit64's slow
dispatcher by shifting the PC left instead of the MSR.

In the past, this also enabled an optimization in JitArm64's fast path
where we could use LDP to load normalEntry and msrBits in one
instruction, but this was superseded by fd9c970.
2023-11-29 19:13:09 +01:00
JosJuice 3df09f349d JitArm64: Prefer X8 and up for temporary registers in JitAsm
Just to make the code easier to understand at a glance. I especially
found it a bit annoying to reason about whether callee-saved registers
like W28 were being used because we needed a callee-saved register or
just for no reason in particular.

X8 and up is what compilers normally use when they're not register
starved.
2023-11-29 19:13:03 +01:00
Mai 0a62b30cd4
Merge pull request #11906 from noahpistilli/request-register-user-id
IOS/KD: Implement Request Register User ID
2023-11-29 03:31:59 -05:00
Mai 02de58eb2c
Merge pull request #12337 from Tilka/imm16
Jit64: fix invalid instruction encoding
2023-11-29 01:10:22 -05:00
Tillmann Karras f6131e9703 Jit64: fix invalid instruction encoding
This is a recent regression introduced in
c70dcf99dd.
2023-11-29 05:49:02 +00:00
Mai a7216a3035
Merge pull request #9857 from JosJuice/jitarm64-cr-analysis
PPCAnalyst: Allow more reordering of CR operations
2023-11-28 21:01:07 -05:00
Sketch f2607cdd74 IOS/KD: Implement Request Register User ID 2023-11-28 20:40:15 -05:00
Mai b7435be90a
Merge pull request #12298 from Shoegzer/master
Update default IP for HLE BBA
2023-11-28 22:45:17 +01:00
Mai d095bddbe7
Merge pull request #12141 from JosJuice/jit-blr-msr
Jit: Check MSR state in BLR optimization
2023-11-28 22:35:35 +01:00
JosJuice fc95d59805 JitArm64: Further optimize NaN handling in ps_sumX
So short that using farcode is pointless!
2023-11-28 21:45:44 +01:00
JosJuice 8274dcbfe4 JitArm64: Skip checking last input for NaN for non-SIMD operations
AArch64's handling of NaNs in arithmetic instructions matches PowerPC's
as long as no more than one of the operands is NaN. If we know that all
inputs except the last input are non-NaN, we can therefore skip checking
the last input. This is an optimization that in principle only works for
non-SIMD operations, but ps_sumX effectively is non-SIMD as far as the
arithmetic part of it is concerned, so we can use it there too.
2023-11-28 21:45:40 +01:00
Mai 95f06ef231
Merge pull request #12122 from JosJuice/jit-imm-msr
Jit: Handle imm msr in EmitStoreMembase
2023-11-28 21:34:23 +01:00
Mai 8cf0597d5f
Merge pull request #12091 from JosJuice/jitarm64-skip-quiet-bit
JitArm64: Use one instruction for making NaNs quiet
2023-11-28 21:33:25 +01:00
Mai e99ead0a68
Merge pull request #12124 from JosJuice/jitarm64-mfsrin-mtsrin-addr
JitArm64: Optimize mfsrin/mtsrin address calculations
2023-11-28 21:30:30 +01:00
Mai b53ecd73fb
Merge pull request #12143 from JosJuice/jitarm64-loadstore-pc
JitArm64: Write PC when calling MMU.cpp
2023-11-28 21:29:37 +01:00
Mai 1df685b2d7
Merge pull request #12123 from JosJuice/jit-mcrxr
Jit: Some mcrxr optimizations
2023-11-28 19:32:47 +01:00
Mai 20b13df507
Merge pull request #12179 from JosJuice/jitarm64-gp-deduplicate
JitArm64: Deduplicate the gather pipe exception check
2023-11-28 19:21:58 +01:00
Mai ac53766058
Merge pull request #12215 from JosJuice/android-si-devices
Android: Add more GameCube controller types
2023-11-28 19:21:29 +01:00
JosJuice 80171adf1e PPCTables: Retire FL_EVIL
FL_EVIL is only used for blocking instructions from being reordered.
There are three types of instructions which have FL_EVIL set:

1. CR operations. The previous commits improved our CR analysis
   and removed FL_EVIL from these instructions.
2. Load/store operations. These are always blocked from reordering
   due to always having canCauseException set.
3. isync. I don't know if we actually need to prevent reordering
   around this one, since as far as I know we only do reorderings
   that are guaranteed to not change the behavior of the program.
   But just in case, I've renamed FL_EVIL to FL_NO_REORDER instead of
   removing it entirely, so that it can be used for this instruction.
2023-11-28 18:59:34 +01:00
JosJuice f494a3d9e8 PPCAnalyst: Remove CanSwapAdjacentOps's OPCD check
Other than the CR instructions, which we now analyze properly,
all the covered instructions are not integer operations and also
have either FL_ENDBLOCK or FL_EVIL set, so there are two other
checks in CanSwapAdjacentOps that will reject them.
2023-11-28 18:59:34 +01:00
JosJuice 96d622bb61 PPCAnalyst: Run cror reordering after cmp reordering
We would rather have cror be close to the cmp than the branch.
2023-11-28 18:59:34 +01:00
JosJuice 40e0dd93be PPCAnalyst: Allow more reordering of CR operations
This is possible with the improved CR analysis implemented
in the previous commits.
2023-11-28 18:59:34 +01:00
JosJuice da63cee711 PPCAnalyst: More strict a_flags checks in CanSwapAdjacentOps
If for instance instruction a sets OE and instruction b
reads it, we shouldn't permit reordering.
2023-11-28 18:59:34 +01:00
JosJuice 8e9609df6e JitArm64: Add flush/discard support for condition registers
By flushing the condition registers as soon as we no longer
need them, we reduce the register pressure.
2023-11-28 18:59:31 +01:00
JosJuice 6cc4f593e5 PPCAnalyst: Add in-register/discard analysis for CR
This brings the analysis done for condition registers
more in line with the analysis done for GPRs and FPRs.

This gets rid of the old wantsCR member, which wasn't actually
used anyway. In case someone wants it again in the future, they
can compute the bitwise inverse of crDiscardable.
2023-11-28 18:58:47 +01:00
JosJuice d6987b98be PPCAnalyst: Perform CR analysis for crXXX 2023-11-28 18:51:03 +01:00
JosJuice 4ecdb9e57e JitArm64: Use one instruction for making NaNs quiet
Instead of materializing the quiet bit in a register and ORing the NaN
with it, we can perform an arithmetic operation on the NaN. This is a
cycle or two slower on some CPUs in cases where generating the quiet bit
pipelined well, but this is farcode that rarely runs, so instruction
fetch latency is the bigger concern. And for non-SIMD cases, we also
save a register.
2023-11-28 18:49:30 +01:00
JosJuice d5ec5c005a JitArm64: Some more FPRF optimization
By using MOVI2R+MOVI2R+CSEL in the zero case instead of doing bitwise
operations on the output of the other MOVI2R+MOVI2R+CSEL, we avoid using
BFI, an instruction that takes two cycles on most CPUs. The instruction
count is the same and the pipelining should be at least equally good.
2023-11-28 18:30:55 +01:00
JosJuice 255ee3fdce JitArm64: Use LSL+CLS for classifying floats
This is a little trick I came up with that lets us restructure our float
classification code so we can exit earlier when the float is normal,
which is the case more often than not.

First we shift left by 1 to get rid of the sign bit, and then we count
the number of leading sign bits. If the result is less than 10 (for
doubles) or 7 (for floats), the float is normal. This is because, if the
float isn't normal, the exponent is either all zeroes or all ones.
2023-11-28 18:30:45 +01:00
Zopolis4 481bc76d8e
Remove redundant 32-bit code 2023-11-28 23:03:26 +11:00
Zopolis4 f0d2ce4683
Remove _M_X86 in favour of _M_X86_64 2023-11-28 23:03:20 +11:00
Tilka ac4da97159
Merge pull request #12075 from JosJuice/gpr-block-inputs
PPCAnalyst: Fix gprBlockInputs calculation
2023-11-28 09:23:23 +00:00
Lexi Larkin 71dfa66d8b Tool/Header: Add JSON output mode; game data 2023-11-28 08:49:28 +00:00
Dentomologist becbaf50c4 OGLConfig: Only use Warn Log if OGL extensions are missing 2023-11-27 20:52:04 -08:00
Mai 9d415c1dbc
Merge pull request #12192 from JosJuice/jitarm64-nan-check
JitArm64: Check packed NaNs without using extra register
2023-11-28 04:22:27 +01:00
Mai 99cf862596
Merge pull request #12317 from JosJuice/setting-saveable-cleanup
Config: Clean up IsSettingSaveable
2023-11-28 04:20:21 +01:00
Mai 7e9c19fdb1
Merge pull request #12231 from JosJuice/jitarm64-frsqrte-optimization
JitArm64: Optimize frsqrte routine
2023-11-28 04:19:27 +01:00
Mai 731013c316
Merge pull request #12263 from Dentomologist/realtime_cheatsearch_update
CheatSearch: Automatically update Current Values
2023-11-28 04:17:06 +01:00
Mai 2869a4c168
Merge pull request #12278 from JosJuice/jitarm64-gpr-loop
JitArm64: Optimize Arm64GPRCache::FlushRegisters/FlushCRRegisters
2023-11-28 04:14:34 +01:00
Mai 6be8e63b23
Merge pull request #12306 from JosJuice/hle-discard
PPCAnalyst: Don't discard registers across HLE'd functions
2023-11-28 04:05:31 +01:00
Tilka b8a897fda7
Merge pull request #12328 from iwubcode/xf_state_manager
VideoCommon: move xf state management to its own class
2023-11-28 02:04:26 +00:00
TryTwo e5f5722497 Callstack: Bugfix. Remove double counting in loop to allow for more callstack items to be reported. 2023-11-27 14:18:25 -07:00
JosJuice 3a00ff625e PPCAnalyst: Don't discard registers across HLE'd functions
Not sure if this was causing correctness issues – it depends on whether
the HLE code was actually reading the discarded registers – but it was
at least causing annoying assert messages in one piece of homebrew.
2023-11-27 21:40:42 +01:00
JosJuice ba6fea1c81 HLE: Refactor ReplaceFunctionIfPossible 2023-11-27 21:40:42 +01:00
JosJuice be1e103435 Remove references to Debugger.ini
This file was only used by DolphinWX. DolphinQt uses Qt.ini instead.
2023-11-27 21:38:43 +01:00
JosJuice b18519320c Config: Flip the IsSettingSaveable system check
Nowadays, basically everything except for controller config is handled
by the new config system. Instead of enumerating the systems that are,
let's enumerate the systems that aren't.

I've intentionally not included Config::System::Session in the new list.
While it isn't intended to be saved, it is a setting that's fully
handled by the new config system. See
https://github.com/dolphin-emu/dolphin/pull/9804#discussion_r648949686.
2023-11-27 21:38:25 +01:00
JosJuice 5c3517c31d Config: Remove RA settings from s_setting_saveable
We can cover them using Config::System::Achievements.
2023-11-27 21:36:19 +01:00
JosJuice 51bc86fc25 Config: Remove MAIN_USE_DISCORD_PRESENCE from s_setting_saveable
It's already covered by Config::System::Main.
2023-11-27 21:36:19 +01:00
Mai d28155a7bb
Merge pull request #12265 from TryTwo/FuncFinder_bkup
CodeDiffDialog: Add saving/loading results to a file.
2023-11-27 19:00:27 +01:00
Tilka c53e29c3c8
Merge pull request #11093 from Pokechu22/disable-graphics-settings
Disable graphics settings fields when incompatible settings are enabled
2023-11-27 12:54:02 +00:00
Tilka ff6ea89036
Merge pull request #10818 from Pokechu22/icache-always-invalidate
PPCCache: Always invalidate on icbi, even if icache is disabled
2023-11-27 10:15:05 +00:00
TryTwo 0826586f96 CodeDiffDialog: Add saving/loading function finder results. 2023-11-26 21:26:58 -07:00
Mai eba2b9ab9c
Merge pull request #12279 from Dentomologist/opengl_single_core_fix_start_movie_recording_crash
Movie: Fix crash when starting input recording on OpenGL single core
2023-11-27 03:19:54 +01:00
iwubcode fb86c6342e VideoCommon: move texture dump function out of texture cache to its own free function so it can be used elsewhere. Doing this change may also slightly improve performance of this operation 2023-11-26 16:35:03 -06:00
iwubcode 095f946b66 Core: update State version due to adding XFStateManager 2023-11-26 16:30:54 -06:00
iwubcode 849a0c13b5 VideoCommon: move xf state management to its own class, so changes can be detected in places other than VertexShaderManager 2023-11-26 16:27:26 -06:00
Mai 1a2d0882d0
Merge pull request #12319 from JosJuice/jitarm64-branch-not-farcode
JitArm64: Don't use farcode for conditional branch instructions
2023-11-26 23:09:25 +01:00
Mai c8a493964a
Merge pull request #12307 from iwubcode/xxhash
Externals: update xxhash to 0.8.2 as submodule
2023-11-26 23:00:24 +01:00
Mai 10e2ad305d
Merge pull request #12316 from JosJuice/android-less-host-thread-lock
Android: Remove HostThreadLocks that are no longer needed
2023-11-26 22:56:55 +01:00
Mai 8a19be6052
Merge pull request #12321 from Dentomologist/netplay_setup_dialog_connect_tab_fix_spacing
NetPlaySetupDialog: Fix spacing in Connect tab
2023-11-26 22:51:42 +01:00
JosJuice 3d5f95b298
Merge pull request #12297 from Filoppi/improve_paper_white
Change HDR paper white default to 203 to match the ITU recommendations
2023-11-26 18:03:39 +01:00
JosJuice 166bd87f70 PowerPC: Unify "FromJit" MMU functions
This gets rid of the odd argument order we were using for JitArm64.
2023-11-26 14:51:16 +01:00
Tilka 719f1dca29
Merge pull request #12325 from Tilka/vulkan
Vulkan: use EnumMap for blend factor luts (NFC)
2023-11-26 07:12:23 +00:00
Lioncash 05015531a8 SkylanderModifyDialog: Remove unnecessary string conversions 2023-11-25 22:29:44 -05:00
Lioncash 8dfbc45df7 SkylanderModifyDialog: Mark label string as translatable
This is a user-facing string. Also fixes a nearby typo in an error
message string.
2023-11-25 22:29:41 -05:00
Lioncash cdfabb4524 SkylandersPortalWindow: Directly connect slot in CreateSlotLayout
The interface corresponds with what QCheckBox::toggled wants, so we can
use the member function directly.
2023-11-25 22:16:39 -05:00
Lioncash 24c009f7ce SkylandersPortalWindow: Mark helpers as const/static where applicable
These helpers don't directly modify class state.
2023-11-25 21:44:07 -05:00
Lioncash 6d47d6c08e SkylandersPortalWindow: Remove unnecessary string conversions
Same behavior without a bit of churn.
2023-11-25 21:33:25 -05:00
Tilka c16e98a31f
Merge pull request #12323 from lioncash/virt
CustomAssetLibrary: Add virtual destructor
2023-11-26 00:54:11 +00:00
Tillmann Karras e3b1439e1b Vulkan: use EnumMap for blend factor luts (NFC) 2023-11-26 00:36:53 +00:00
Lioncash 04011373f3 CustomAssetLibrary: Remove unnecessary qualifier in LoadInfo
The type is already in visible scope, so we don't need the rather length
qualifier.
2023-11-25 18:01:44 -05:00
Lioncash b85902ccb5 CustomAssetLibrary: Add virtual destructor
This is used as a base pointer inside CustomPipelineAction, so this
should probably really have a virtual destructor to ensure derived
objects are torn down properly.
2023-11-25 18:01:17 -05:00
Lioncash 644f7f6e55 WC24Send: Add missing header guard
Prevents double inclusions from occurring in the same TU.
2023-11-25 17:53:46 -05:00
Dentomologist 715ba3cd0f NetPlaySetupDialog: Fix spacing in Connect tab
Add a spacer between the alert text and Connect button to prevent the
alert text from migrating down with larger window heights.
2023-11-25 13:14:45 -08:00
Admiral H. Curtiss 76d605639b
Merge pull request #11881 from JosJuice/aarch64-function-call
JitArm64: Add utility for calling a function with arguments
2023-11-25 17:30:42 +01:00
JosJuice 2f407fc854 JitArm64: Don't use farcode for conditional branch instructions
The point of farcode is to provide a separate location for code that
rarely runs, so that it doesn't pollute the icache. Taking a conditional
branch is something that happens very often, so the code for that
shouldn't be in farcode.
2023-11-25 16:40:35 +01:00
JosJuice 5bda811a00 Android: Remove HostThreadLocks that are no longer needed
71ce8bb6f0 got rid of the need to be the
host or CPU thread when writing to the config.
2023-11-25 14:06:29 +01:00
Admiral H. Curtiss afb4be1a90
Merge pull request #12311 from kemenaran/fix-metal-adapter-unknown-selector
Metal: fix crash by enabling concurrent compilation only if available
2023-11-24 21:52:32 +01:00
Pierre de La Morinerie 0ecfaf3b9e
Metal: enable concurrent compilation only if available
Bug: https://bugs.dolphin-emu.org/issues/13404

On macOS 13.6 / Intel HD 5000, Dolphin crashes with this message:

> -[MTLIGAccelDevice setShouldMaximizeConcurrentCompilation:]: unrecognized selector

This should be available on all macOS 13.3+ systems – but when using OCLP drivers,
some devices use an older version of Metal.framework, which doesn't expose the selector.

This concerns Intel Ivy Bridge, Haswell and Nvidia Kepler when using OCLP on macOS 13.3
or newer.
(See
34676702f4/docs/PATCHEXPLAIN.md?plain=1#L354C1-L354C83)

As the behavior is an optional optimization anyway, perform a dynamic
detection to avoid crashing if the feature is not available.
2023-11-24 15:09:25 +01:00
Admiral H. Curtiss feeac104d8
Merge pull request #12304 from sepalani/pcap-io
BBA/HLE: Fix random PCAP file corruption
2023-11-23 19:26:00 +01:00
Sepalani 91020ac4fa BBA/HLE: Fix random PCAP file corruption
Concurrency between RecvHandlePacket and SendFromDirectFIFO
2023-11-23 22:07:44 +04:00
Admiral H. Curtiss 937cb8ef3a
Merge pull request #12299 from TryTwo/PR_bugfix_frame_advance
Core: Add option to not report state change to SetState (bugfix)
2023-11-22 23:10:51 +01:00
Admiral H. Curtiss 1cfa29f090
Merge pull request #12303 from Pokechu22/dsp-hle-aesnd-2023
DSPHLE: Support 2023 libaesnd uCode
2023-11-22 23:05:38 +01:00
Tillmann Karras 77a1eaa740 IOS: fix crash when closing invalid file descriptor
This regression was introduced in 5.0-20284.
2023-11-21 12:00:34 +00:00
Tilka f79c88f30b
Merge pull request #12302 from JosJuice/jit-replace-vectors
Jit: Get rid of short-lived std::vectors
2023-11-20 18:11:15 +00:00
iwubcode 321e5051db Externals: update xxhash to 0.8.2 as submodule; put in logic to ensure LZ4 which is also using xxhash does not clash when linking symbols 2023-11-19 14:22:59 -06:00
Pokechu22 2d7a078d53 DSPHLE: Support 2023 libaesnd uCode
Fixes https://bugs.dolphin-emu.org/issues/13401
2023-11-19 10:16:47 -08:00
JosJuice c3c0c7dc1c Jit: Get rid of short-lived std::vectors
Let's aim for making as few heap allocations as possible while jitting.
2023-11-18 23:15:37 +01:00
Tillmann Karras da1bf29722 AX: fix envelope volume for Wii ucodes
Technically it is signed in the 0x7699af32 ucode but that's only used
by the Wii Startup Disc which never uses negative values.
2023-11-16 21:43:45 +00:00
TryTwo b57ba42a55 Core::SetState() allow state to change without sending a callback.
Some state changes are meant to be near instantanoues, before switching to something else. By reporting ithe instant switch, the UI will flicker between states (pause/play button) and the debugger will unnecessarily update. Skipping the callback avoids these issues.
2023-11-16 11:07:37 -07:00
TryTwo df8c0d2b39 Core::GetState() bugfix: remove forced incorrect state on frame advance.
This was implemented to prevent UI flickering due to  the state rapidly switching between pause/play.  Recently, it has been causing issues with debugger windows, which update during frame advance.
2023-11-16 10:41:53 -07:00
Shoegzer 21e9cdfbd0 Also update IP in Android GUI 2023-11-15 13:50:54 -05:00
Shoegzer 1d848c554d Update default IP for HLE BBA 2023-11-14 15:00:06 -05:00
Filoppi a8fd938a06 Change paper white default to 203 to match the ITU 2023-11-14 20:21:34 +02:00
JosJuice 6a9f565ac4 JitArm64: Optimize Arm64GPRCache::FlushRegisters/FlushCRRegisters
This way, the number of loop iterations is equal to the number of set
bits in the bitset rather than the number of bits in the bitset,
which is a good improvement because usually very few bits are set.
2023-11-13 18:28:51 +01:00
JosJuice 2ea95f5835 JitArm64: Use BitSet8 for Arm64GPRCache::FlushCRRegisters
There are only 8 CR registers, after all.
2023-11-13 18:28:51 +01:00
Sepalani 13e76500c2 BBA/HLE: Fix GC homebrew if_config not working 2023-11-13 19:32:03 +04:00
Tilka 87c27936fc
Merge pull request #12238 from AdmiralCurtiss/achievementheaderwidget-unused-variables
DolphinQt/AchievementHeaderWidget: Remove unused member variables.
2023-11-12 21:24:17 +00:00
Tilka aa1311cd78
Merge pull request #12268 from JosJuice/fastmem-terminology
Jit: Define new terms related to fastmem
2023-11-12 19:44:45 +00:00
Tilka 166423ad61
Merge pull request #12273 from Dentomologist/dolphinqt_remove_unnecessary_qoverloads
DolphinQt: Remove unnecessary qOverloads
2023-11-12 19:43:05 +00:00
Tilka 4b38560323
Merge pull request #12282 from Wack0/mmu-tlb-patch
MMU: Use VSID in segment register as additional TLB lookup key
2023-11-12 19:41:23 +00:00
Tilka 15a3200b70
Merge pull request #12288 from Pokechu22/bp-stride-scale-fallthrough
Fix accidental fallthrough in BPStructs
2023-11-12 19:35:37 +00:00
Tilka 4285e9d8aa
Merge pull request #12276 from Tilka/ax_volume
AX: make volume field signed
2023-11-12 19:35:15 +00:00
Pokechu22 3984d1964b Fix accidental fallthrough in BPStructs
This caused us to update the indirect texture information in shaders more often than we needed to, which probably doesn't matter in practice since it's only used in ubershaders and copyyscale and stride are generally only updated before EFB/XFB copies, which generally will have other changes afterwards.
2023-11-12 10:39:56 -08:00
Tilka e7b922ee62
Merge pull request #12286 from Pokechu22/more-bp-register-descriptions
Add descriptions for more BP registers
2023-11-12 07:59:32 +00:00
Pokechu22 da8407e01c Add descriptions for more BP registers 2023-11-11 23:32:17 -08:00
Pokechu22 dfdb9a4a07 Clarify per-texture tmem information in the fifo analyzer 2023-11-11 23:32:17 -08:00
Pokechu22 ea41d0e384 Convert BPMEM_LOADTLUT1 to a struct 2023-11-11 23:32:17 -08:00
Pokechu22 2a1d445b30 Enhance description of BPMEM_PRELOAD_MODE in the fifo analyzer 2023-11-11 23:32:17 -08:00
Pokechu22 6bad17b170 Rename bpmem.copyMipMapStrideChannels to bpmem.copyDestStride
As far as I can tell, it has nothing to do with the mipmap/half_scale functionality, but does change based on the width of the destination texture (and the destination texture is half the width if half_scale is set). The comment that was there (which dates back to the initial megacommit) seems to not have accounted for the width aspect; it was first used as an actual stride in bbbe898839 (the first commit that used it at all).
2023-11-11 23:32:14 -08:00
Tillmann Karras ac9079f2ca VideoCommon: copy software renderer logic for blend mode priorities
I've not tested this on hardware, but it fixes issue 12271 (shadow
people in Deal or No Deal - Special Edition).
2023-11-12 05:51:28 +00:00
Pokechu22 9543555bfe Fix typo in comment for bpmem.texcoords 2023-11-11 16:13:37 -08:00
Rairii 2333fc2701 MMU: Use VSID in segment register as additional TLB lookup key 2023-11-11 15:59:47 +00:00
Admiral H. Curtiss f35ee22755
Merge pull request #12283 from Dentomologist/wiisocket_delete_move_assignment_operator
WiiSocket: Explicitly delete move assignment operator
2023-11-11 13:31:16 +01:00
Dentomologist 9ebd257206 WiiSocket: Explicitly delete move operators
The move assignment operator for a class is implicitly deleted when the
class has a non-static reference data member, which is true of
WiiSocket's m_socket_manager member.

Explicitly declaring the operator as default generates a
-Wdefaulted-function-deleted warning on Clang.

Delete the move constructor as well for consistency.
2023-11-10 12:56:00 -08:00
Admiral H. Curtiss 4345980b25
Merge pull request #12284 from Dentomologist/sdl_add_default_case_to_switch_statement
SDL: Add default case to switch statement
2023-11-10 21:25:40 +01:00
Dentomologist 2d3bae9c79 SDL: Add default case to switch statement
Fix -WSwitch warning about unhandled enum value SDL_NUM_LOG_PRIORITIES.

log_level is initialized to LNOTICE right before the switch statement so
this doesn't cause any behavior changes.
2023-11-10 12:05:20 -08:00
Dentomologist 1dff22d576 Movie: Fix crash when starting input recording on OpenGL single-core
Use RunOnCPUThread instead of RunAsCPUThread in BeginRecordingInput.

Most OpenGL functions require an OpenGL context to have been created on
that thread before calling the function; when that isn't the case they
return invalid results which can cause crashes when passed into other
functions.

Dolphin creates the OpenGL context in the EmuThread which then becomes
either the CPU-GPU thread or the Video thread for single and dual core
respectively. OpenGL functions must therefore be called from that
thread.

Movie::BeginRecordingInput is called from the Host thread and runs a
block of code which ultimately creates a savestate, which in turn embeds
the framebuffer which requires calling various OpenGL functions.

In single core the use of RunAsCPUThread leads to this all happening on
the Host thread, eventually leading to invalid OpenGL calls and a crash.

In Dual core the crash is avoided because VideoBackendBase::DoState uses
the AsyncRequests::DO_SAVE_STATE event which causes VideoCommon_DoState
and its subsequent OpenGL calls to safely run on the Video thread.

This commit uses RunOnCPUThread instead of RunAsCPUThread, which causes
the subsequent code to run on the CPU-GPU thread in single core which
has the valid OpenGL context and so doesn't crash.
2023-11-08 19:14:54 -08:00
Admiral H. Curtiss 620fbcdfb7
Merge pull request #12274 from JosJuice/jitarm64-non-dirty-immediates
JitArm64: Fix some oddities with non-dirty immediates
2023-11-08 20:44:32 +01:00
Rairii 18d777095b
MMU: on DSI exception, don't set store bit on read 2023-11-08 16:06:11 +00:00
JosJuice aec5238aa6
Merge pull request #12237 from AdmiralCurtiss/hard-label
DolphinQt/AchievementHeaderWidget: Fix wrong label for hard unlock count.
2023-11-06 20:22:23 +01:00
Admiral H. Curtiss 40bf452ac8
Merge pull request #12182 from JosJuice/jit64-ps-sum1
Jit64: Use MOVSD in ps_sum1 and ps_merge01
2023-11-06 14:50:33 +01:00
Tillmann Karras b8bc391d27 AX: make volume field signed
This fixes overly loud sounds in Freestyle Metal X (issue 13120).
2023-11-05 21:21:07 +00:00
Admiral H. Curtiss ec69ed2173
Merge pull request #12133 from mandar1jn/skylanders-improved-generation
Skylanders: Improve figure data view and generation
2023-11-05 18:29:19 +01:00
Admiral H. Curtiss 1748e6416f
Merge pull request #12272 from AdmiralCurtiss/dark-mode-gui
DolphinQt: Allow forcing light or dark style on Windows.
2023-11-05 18:28:59 +01:00
Admiral H. Curtiss 2f9e98b77b
DolphinQt: Check theme instead of system for when to apply dark title bars on Windows. 2023-11-05 18:13:00 +01:00
Mandar1jn afdf6de041
Skylanders: Improve figure data view and generation
Co-authored-by: deReeperJosh <joshua@dereeper.co.nz>
2023-11-05 18:06:10 +01:00
JosJuice 9a342af857
Merge pull request #12275 from JosJuice/directoryblob-comma
DiscIO: Remove unintentional use of comma operator
2023-11-05 14:40:25 +01:00
Admiral H. Curtiss ed6014ddb5
DolphinQt/InterfacePane: Rework style dropdown so the built-in light/dark style can be manually selected. 2023-11-05 12:59:32 +01:00
Admiral H. Curtiss 8f55c28472
DolphinQt/Settings: Add option to force the light or dark style on Windows. 2023-11-05 12:59:32 +01:00
Admiral H. Curtiss 6d585b6eb6
DolphinQt/Settings: Split setting of the user style into two functions.
This makes it so that if you just want to reload the current style (eg. on program start, or in response to a system event), you don't need to know the name of the currently selected user style. It's also more consistent with the way the 'userstyle/enabled' flag works.
2023-11-05 12:58:11 +01:00
Admiral H. Curtiss 9d08c8a45d
Merge pull request #12271 from TryTwo/Qt_Display_Fixes
UI, CodeDiffDialog: Fix table widget display issues, including dark style.
2023-11-05 12:53:45 +01:00
JosJuice 9c53c110f8 DiscIO: Remove unintentional use of comma operator 2023-11-05 09:24:49 +01:00
JosJuice f9dd13a309 JitArm64: Preserve dirty flag when materializing immediate
Before dbf5dca, the dirty flag had no meaning for an immediate value,
so we made sure to always set the dirty flag when switching a register
from Immediate to Register. But after dbf5dca, that is no longer the
case. If an immediate is marked as not dirty, we can keep the register
marked as not dirty after materializing the value. This way we skip
having to write it back to ppcState later.
2023-11-05 09:21:58 +01:00
JosJuice 1b7bd32ac1 JitArm64: Correctly flush non-dirty immediates
Without this change, non-dirty immediates don't actually get flushed.
This can be a problem if we for instance are flushing all registers in
order to execute an interpreter fallback. If that interpreter fallback
writes to a register that contained a non-dirty immediate, the JIT will
keep using the old value instead of loading the updated value.
2023-11-05 09:15:08 +01:00
TryTwo 2a5147a19b Dark style: add QTableCornerButton. Fix padding for tables.
CodeDiffDialog: Fix QTableWidget UI issues
2023-11-04 15:00:07 -07:00
Dentomologist 43e69d3e6a DolphinQt: Remove unnecessary qOverloads
qOverload is used to disambiguate pointers to overloaded functions, but
most of the usages in the code base were with non-overloaded functions.
2023-11-04 14:14:14 -07:00
Tilka b7b8f46832
Merge pull request #12259 from Sintendo/frsqrte-unit-test
UnitTests: Test frsqrte against known values
2023-11-04 20:10:23 +00:00
JosJuice 9cc1df6c14 JitArm64: Optimize frsqrte denormal path (in an "interesting" way) 2023-11-04 11:58:03 +01:00
JosJuice 9b21046dfc JitArm64: Read X1 instead of X3 in frsqrte denormal path
If we hit the denormal path, the sign and exponent are guaranteed to be
0, which means X1 and X3 have the same value.
2023-11-04 11:58:03 +01:00
JosJuice 9807cf0b82 JitArm64: Stop using X4 in frsqrte
This required a change in the denormal path where, instead of
subtracting 11 before shifting left, we shift left immediately and then
shift right by 11. This shouldn't affect performance.
2023-11-04 11:58:03 +01:00
JosJuice 4b2f73774f JitArm64: Optimize frsqrte denormal path
Now that the normal path is no longer reading X2 and X3, it doesn't
matter what the denormal path writes to them.
2023-11-04 11:58:03 +01:00
JosJuice e5bd8019f6 JitArm64: Read X1 instead of X3 in frsqrte normal path
With this, the normal path is no longer reading the value in X3,
which opens up for the next commit.
2023-11-04 11:57:59 +01:00
JosJuice 31d751b6da JitArm64: Read X1 in frsqrte normal path
Instead of combining X2 (the exponent) and X3 (the mantissa) using an
ORR instruction, we can read X1, which already contains both.

This requires us to reconstruct X1 in the denormal path, but that's
an acceptable price.
2023-11-04 11:56:15 +01:00
Admiral H. Curtiss b181842092
Netplay: Fix building on clang 17. 2023-11-03 16:15:04 +01:00
Admiral H. Curtiss 7dae4dd3d2
Merge pull request #12266 from noahpistilli/kd-junk-data
IOS/KD: Disable download and mail when files are invalid
2023-11-03 15:27:44 +01:00
Sketch ad2044993d IOS/KD: Disable download and mail when files are invalid 2023-11-02 22:05:56 -04:00
JosJuice 482da7975b Jit: Define new terms related to fastmem
Dolphin's JITs have a minor terminology problem: The term "fastmem" can
refer to either the system of switching between a fast path and a slow
path using backpatching, or to the fast path itself. To hopefully make
things clearer, I'm adding some new terms, defining the old and new
terms as follows:

Fastmem: The system of switching from a fast path to a slow path by
backpatching when an invalid memory access occurs.

Fast access: A code path that accesses guest memory without calling C++
code.

Slow access: A code path that accesses guest memory by calling C++ code.
2023-11-02 21:30:12 +01:00
Admiral H. Curtiss b4c0da30bd
Merge pull request #12244 from DacoTaco/feature/crypto
IOS: implement /dev/aes & /dev/sha
2023-11-02 19:36:40 +01:00
DacoTaco 2241aaf168 IOS: implement /dev/aes 2023-11-01 22:08:39 +01:00
DacoTaco d4c18f3f31 IOS: implement /dev/sha 2023-11-01 22:08:39 +01:00
JosJuice 13c70eeb31
Merge pull request #12257 from Wack0/patch-1
JIT64 (Jit_Integer): for twx instructions, raise exception with correct SRR0
2023-11-01 21:10:39 +01:00
JosJuice c248a69268 JitArm64: Add utility for calling a function with arguments
With this, situations where multiple arguments need to be moved
from multiple registers become easy to handle, and we also get
compile-time checking that the number of arguments is correct.
2023-11-01 19:01:58 +01:00
Admiral H. Curtiss 17122f171a
Merge pull request #12260 from Pokechu22/multiple-fifo-recording-regression
Fix regression when recording multiple fifologs
2023-11-01 12:01:52 +01:00
Admiral H. Curtiss ff009dd8b5
Merge pull request #12258 from skyfloogle/traversal-logging
Netplay: Don't log skippable events as errors
2023-11-01 11:56:39 +01:00
Dentomologist 9230266529 CheatSearchWidget: Add checkbox to toggle Current Value autoupdate 2023-10-31 17:35:14 -07:00
Dentomologist fdb7328c73 CheatSearch: Update Current Values at end of frame
At the end of each frame automatically update the Current Value for
visible table rows in the selected and visible CheatSearchWidget (if
any). Also update all Current Values in all CheatSearchWidgets when the
State changes to Paused.

Only updating visible table rows serves to minimize the performance cost
of this feature. If the user scrolls to an un-updated cell it will
promptly be updated by either the next VIEndFieldEvent or the State
transitioning to Paused.
2023-10-31 17:34:31 -07:00
JosJuice d04e67be3d Add fastmem arena setting
Just for debugging.
2023-10-31 19:43:49 +01:00
JosJuice 8686536d7d Jit: Always initialize fastmem arena
If dcache is enabled when the game starts, initializing the fastmem
arena is still useful in case the user changes the dcache setting.
And initializing it doesn't really cost anything.
2023-10-31 19:43:49 +01:00
JosJuice 0606433404 JitArm64: Check fastmem instead of fastmem_arena
Preparation for the next commit.

JitArm64 has been conflating these two flags. Most of the stuff that's
been guarded by fastmem_arena checks in fact requires fastmem.

When we have fastmem_arena without fastmem, it would be possible to do
things a bit more efficiently than what this commit does, but it's
non-trivial and therefore I will leave it out of this PR. With this
commit, we effectively have the same behavior as before this PR - plus
the added ability to toggle fastmem with a cache clear.
2023-10-31 19:43:49 +01:00
JosJuice b3bfcc5d7f PowerPC: Allow toggling write-back cache during emulation
Now that PR 10575 is merged, the JIT automatically clears its cache
when this setting is changed, making this reasonable to implement.
2023-10-31 19:43:49 +01:00
JosJuice 899d61bc7d Jit64: Recompile asm routines on cache clear
This is needed so that the checks added in the previous commit will be
reevaluated if the value of m_enable_dcache changes.

JitArm64 was already recompiling its asm routines on cache clear by
necessity. It doesn't have the same setup as Jit64 where the asm
routines are in a separate region, so clearing the JitArm64 cache
results in the asm routines being cleared too.
2023-10-31 19:43:49 +01:00
JosJuice 5e74a8b850 Jit64: Don't make use of fastmem arena when dcache is enabled
Some code paths in EmuCodeBlock.cpp that were checking fastmem_arena
should really also be checking m_enable_dcache.

Because JitArm64 centralizes more or less all memory access to the
EmitBackpatchRoutine function and because that function already
contained a check, JitArm64 works fine without the additional checks
added by this commit. Regardless, I added the checks to MMU.cpp instead
of EmuCodeBlock.cpp where applicable so they would be available to
JitArm64. Maybe one day JitArm64 will need them if its code gets
restructured.
2023-10-31 19:43:40 +01:00
JosJuice b32ac9353e
Merge pull request #12262 from AdmiralCurtiss/last-state-order-refactor
Core/State: Refactor logic for determining the relative age of existing savestates.
2023-10-31 19:39:47 +01:00
Dentomologist 74d3ba7c46 Cheats Manager: Fix factory widget spacing
Add stretch to bottom of factory widget to prevent the Data Type
QGroupBox from getting stretched out awkwardly.
2023-10-30 17:44:39 -07:00
Dentomologist 7dfb23d38c CheatSearchWidget: Don't recreate table when refreshing values
The table only needs to be recreated when the displayed addresses might
change. If we're just refreshing the current values then update those
table cells and leave the rest of the table alone.
2023-10-30 17:18:18 -07:00
Sintendo ef7f3b5bac UnitTests: Test ApproximateReciprocalSquareRoot 2023-10-30 22:39:12 +01:00
Dentomologist fa7c969e15 CheatSearch: Use index range for ClonePartial
Specify the begin and end indices instead of filling a vector with all
the indices which are continuous anyway.
2023-10-30 12:58:38 -07:00
Admiral H. Curtiss 437946fb1a
Core/State: Refactor logic for determining the relative age of existing savestates.
The code previously did this indirectly via `std::map<double, int>`, the key being the timestamp, which required a questionable workaround for the case where multiple states have the same timestamp. By having a particular combination of timestamps in the on-disk savestates, you could cause this workaround to infinitely loop, locking up Dolphin. This avoids this completely by refactoring the logic and just using `std::vector` instead.
2023-10-30 19:19:01 +01:00
Admiral H. Curtiss 99a3bbc055
Core/State: Return an empty string on invalid input to SystemTimeAsDoubleToString(). 2023-10-30 19:19:01 +01:00
Admiral H. Curtiss 03f8ec09eb
Merge pull request #12261 from TryTwo/Bugfix_GetAddress
PPCDebugInterface:  Tweak regex in GetMemoryAddressFromInstruction to fix bugs
2023-10-30 10:49:13 +01:00
Admiral H. Curtiss 045868bbb4
Merge pull request #12256 from malleoz/savestate_read_header_fix
Core: Fix UI slowdown for savestate timestamp reads
2023-10-30 10:45:14 +01:00
TryTwo 490e4b78a7 Bugfixes for PPCDebugInterface::GetMemoryAddressFromInstruction
FromChars cannot return a value prefixed with 0x.
Possible regex failures on rX, rY, rZ
2023-10-29 22:54:45 -07:00
Pokechu22 35831f342e Fix regression when recording multiple fifologs
Since ccf92a3e56, recording fifologs multiple times after launching dolphin caused all initial state to not be saved (the initial contents of bpmem, cpmem, etc were all zeroed out). For some games, this was not noticeable, as most registers were set each frame, but for others, this resulted in completely broken fifologs. (Note that recording fifologs also required 05181f6b88 and 9e0755a598 to be cherry-picked due to other, since fixed, regressions.)

This was because previously, `Renderer::CheckFifoRecording` was called every frame, but ccf92a3e56 changed it into a callback (`m_end_of_frame_event`) that was removed when recording ended. Thus, before, `OpcodeDecoder::g_record_fifo_data = IsRecording()` was called when `IsRecording()` returned false, but after that commit `g_record_fifo_data` never got changed back to false, so the check for `was_recording` only ever passed on the first fifolog recorded (even after stopping and starting a game).

There may still be another issue lurking, as I'm not sure if all broken fifologs were caused by recording multiple fifologs (for instance, on https://bugs.dolphin-emu.org/issues/13377, only one fifolog was initially uploaded, but it was affected by an issue with the same symptoms as this).
2023-10-29 15:23:31 -07:00
Floogle bee6d5bfb6 Netplay: Don't log skippable events as errors 2023-10-28 18:06:07 +02:00
Tilka 2ccc2bfb2e
Merge pull request #12250 from Sintendo/dcbx-nit
Jit_LoadStore: Minor dcbx register optimizations
2023-10-28 02:33:51 +01:00
Tilka 9bea807732
Merge pull request #12249 from Sintendo/frsqrte-nit
PowerPC: Negate m_dec values in frsqrte table
2023-10-28 02:15:05 +01:00
Tilka 2212a5b225
Merge pull request #12254 from AdmiralCurtiss/savestate-no-xfb-stride
VideoCommon: Don't swap on state load when there's no XFB.
2023-10-28 02:14:30 +01:00
Tilka 7c243a110a
Merge pull request #12253 from TellowKrinkle/AsahiGL
Fix shader compiles on Asahi Linux
2023-10-28 02:12:40 +01:00
Tilka ef447bb40b
Merge pull request #12248 from Dentomologist/cheatsearch_use_std_comparison_functions
CheatSearch: Use std comparison function objects
2023-10-28 02:11:18 +01:00
Tilka ce895f1205
Merge pull request #12255 from jordan-woyak/sdl-360
ControllerInterface/SDL: Remove Xbox 360 controller disabling hack.
2023-10-28 02:10:46 +01:00
Rairii c9cd0b626b
JIT64: for twx instruction, raise exception with correct SRR0 2023-10-27 13:27:36 +01:00
sowens99 cddc75c28b Core: Fix UI slowdown for savestate timestamp reads 2023-10-26 22:32:47 -04:00
Jordan Woyak 30ce1f2ec2 ControllerInterface/SDL: Remove Xbox 360 controller disabling hack. 2023-10-26 18:04:11 -05:00
Admiral H. Curtiss 4f0c8b1657
VideoCommon: Don't swap on state load when there's no XFB.
This triggers an assert in TCacheEntry::SetXfbCopy() otherwise if you load a savestate that was made before the first XFB has been rendered.
2023-10-25 18:24:42 +02:00
TellowKrinkle 4f2a79058a VideoBackends:OGL: Handle when SSBOs are only supported in some shader stages 2023-10-25 17:47:04 +02:00
TellowKrinkle 323aea60d6 VideoCommon: Fix VS point/line on older GLSL 2023-10-24 23:18:01 -05:00
Sintendo 171f76ae07 Jit_LoadStore: Another minor dcbx optimization
The multiplication needs the value from RSCRATCH2, but shouldn't
overwrite it as it is still needed later. The original code solved this
by copying RSCRATCH2 to another register first.

As it turns out, the other register involved in the multiplication can
safely be overwritten, so we can swap the operands around and use
RSCRATCH2 directly without making a copy.

Before:
33 D2                xor         edx,edx
8B 45 64             mov         eax,dword ptr [rbp+64h]
85 C0                test        eax,eax
7E 30                jle         000002D4DF373F6B
44 8B B5 D4 02 00 00 mov         r14d,dword ptr [rbp+2D4h]
44 8B E8             mov         r13d,eax
BF 07 00 00 00       mov         edi,7
F7 F7                div         eax,edi
41 8D 56 FF          lea         edx,[r14-1]
3B C2                cmp         eax,edx
0F 42 D0             cmovb       edx,eax
44 2B F2             sub         r14d,edx
44 89 B5 D4 02 00 00 mov         dword ptr [rbp+2D4h],r14d
8B C2                mov         eax,edx
0F AF C7             imul        eax,edi
44 2B E8             sub         r13d,eax
44 89 6D 64          mov         dword ptr [rbp+64h],r13d
44 8D 72 01          lea         r14d,[rdx+1]

After:
33 D2                xor         edx,edx
8B 45 64             mov         eax,dword ptr [rbp+64h]
85 C0                test        eax,eax
7E 2E                jle         0000021C01013F69
44 8B B5 D4 02 00 00 mov         r14d,dword ptr [rbp+2D4h]
44 8B E8             mov         r13d,eax
BF 07 00 00 00       mov         edi,7
F7 F7                div         eax,edi
41 8D 56 FF          lea         edx,[r14-1]
3B C2                cmp         eax,edx
0F 42 D0             cmovb       edx,eax
44 2B F2             sub         r14d,edx
44 89 B5 D4 02 00 00 mov         dword ptr [rbp+2D4h],r14d
0F AF FA             imul        edi,edx
44 2B EF             sub         r13d,edi
44 89 6D 64          mov         dword ptr [rbp+64h],r13d
44 8D 72 01          lea         r14d,[rdx+1]
2023-10-24 00:42:35 +02:00
Dentomologist 3ba5cd30ff SkylanderPortal: Make protected variables private
SkylanderPortal is final, so having member variables be protected
instead of private is just misleading.
2023-10-22 12:00:49 -07:00
Sintendo dd58a8d65e Jit_LoadStore: Minor dcbx register optimization
Instructions referencing registers r8-r15 take an additional byte to
encode. `reg_downcount` may be assigned to one of these registers, so it
is a small size win to store the downcount value in `RSCRATCH` first.

Before:
33 D2                xor         edx,edx
44 8B 6D 64          mov         r13d,dword ptr [rbp+64h]
45 85 ED             test        r13d,r13d
7E 30                jle         0000023546B43F6D
44 8B B5 D4 02 00 00 mov         r14d,dword ptr [rbp+2D4h]
41 8B C5             mov         eax,r13d
BF 07 00 00 00       mov         edi,7
F7 F7                div         eax,edi

After:
33 D2                xor         edx,edx
8B 45 64             mov         eax,dword ptr [rbp+64h]
85 C0                test        eax,eax
7E 30                jle         000001AFBBAE359D
44 8B B5 D4 02 00 00 mov         r14d,dword ptr [rbp+2D4h]
44 8B E8             mov         r13d,eax
BF 07 00 00 00       mov         edi,7
F7 F7                div         eax,edi
2023-10-22 15:13:52 +02:00
Sintendo 3c3168706c PowerPC: Negate m_dec values in frsqrte table
This value is used in a multiplication. The result of this
multiplication is then subtracted from m_base. By negating m_dec, we are
free to use an addition instead.

On x64, this saves an instruction.
2023-10-21 21:08:21 +02:00
Dentomologist c5a8a3fd4a CheatSearch: Use std comparison function objects 2023-10-20 16:05:47 -07:00
LillyJadeKatrin db78437498
Refactored welcome message to render after game start
Split the "welcome" messages letting players know achievements are active into a separate method that gets called (currently) after a number of frames to ensure that the emulator has started properly and has somewhere to display the messages.
2023-10-19 19:21:12 +02:00
LillyJadeKatrin a3d561fdff
Add badges to achievement messages
Updated OSD::AddMessage calls for achievements and game start to pass in the badges intended to be shown.
2023-10-19 19:13:20 +02:00
Admiral H. Curtiss c87b2e46b4
Merge pull request #12242 from AdmiralCurtiss/osd-icons
VideoCommon: Add support for icons in OSD messages.
2023-10-17 12:46:36 +02:00
Admiral H. Curtiss 53ea7aee1b
Merge pull request #12239 from AdmiralCurtiss/achievementprogresswidget-clearlayout
DolphinQt/AchievementProgressWidget: Use ClearLayoutRecursively() to clear layout.
2023-10-17 12:45:40 +02:00
Admiral H. Curtiss cb13ad7a5f
VideoCommon: Add support for icons in OSD messages. 2023-10-17 02:47:29 +02:00
iwubcode b292022bc7 VideoCommon: use ToLower function in assets when parsing json, for proper locale independent behavior 2023-10-16 19:23:00 -05:00
iwubcode fec2a8af8c VideoCommon: add additional properties to ShaderAsset to support custom shader uniforms 2023-10-16 19:02:27 -05:00
Admiral H. Curtiss 3873664143
DolphinQt/AchievementProgressWidget: Use ClearLayoutRecursively() to clear layout. 2023-10-15 22:54:40 +02:00
LillyJadeKatrin b824d55093
Add Leaderboards tab to Achievement dialog
A new tab is added to the Achievements dialog to chart out the leaderboards in a table. Each row of the table contains the leaderboard information and up to four relevant entries, varying based on how many entries are in the leaderboard, whether or not the player has a submitted score, and where in the leaderboard the player's score is.
2023-10-15 21:28:40 +02:00
LillyJadeKatrin 04df930e0d
Added FetchBoardInfo to AchievementManager
FetchBoardInfo is called (via the work queue asynchronously) on a leaderboard every time it is activated or submitted to. It makes two calls to the RetroAchievements API for fetching leaderboard info, one that requests the top four entries in the leaderboard and another that requests the player's entry, the two entries above the player and the two entries below. All of these are inserted into a single map (resolving any overlaps) so the result can be exposed to the UI.
2023-10-15 21:28:40 +02:00
LillyJadeKatrin 61dded7043
Added Leaderboard info map to AchievementManager
The leaderboard map created here contains information useful to displaying leaderboard stats in the Achievement dialog, including each leaderboard's name and description and a partial list of entries for display. The entire map is exposed to the UI in a single call for simplicity.
2023-10-15 21:28:40 +02:00
Admiral H. Curtiss daf9ff012a
Merge pull request #12229 from AdmiralCurtiss/achievement-load-async-lock
AchievementManager: Call ActivateDeactivateLeaderboards() and ActivateDeactivateRichPresence() under lock.
2023-10-15 21:27:41 +02:00
Admiral H. Curtiss 1645b1ed62
AchievementManager: Call ActivateDeactivateLeaderboards() and ActivateDeactivateRichPresence() under lock.
Both of these functions access `m_game_data` and don't lock themselves, so they must be called in a way that guarantees that `m_game_data` is not modified during the call.
2023-10-15 18:59:36 +02:00
Admiral H. Curtiss ab562553f6
DolphinQt/AchievementHeaderWidget: Remove unused member variables. 2023-10-15 18:56:28 +02:00
Admiral H. Curtiss 923fc00777
DolphinQt/AchievementHeaderWidget: Fix wrong label for hard unlock count. 2023-10-15 18:42:03 +02:00
Admiral H. Curtiss 4b2dad074a
DolphinQt: Move GraphicsModListWidget::ClearLayoutRecursively() to QtUtils. 2023-10-15 18:39:05 +02:00
Admiral H. Curtiss 2677fd9a8e
Merge pull request #12185 from iwubcode/custom_shader_uniform_backend_support
VideoBackends / VideoCommon: add support for custom shader uniforms to D3D, Vulkan, OGL
2023-10-15 00:21:56 +02:00
Dentomologist b2a8f7e276 IOS: Convert ObjectSubType to enum class 2023-10-11 14:21:29 -07:00
Admiral H. Curtiss 111c1ab531
AchievementManager: Don't store pointer to rc_runtime_event_t in lambda.
Scope issue in the event callback from `rc_runtime_do_frame()`. The pointer points to a variable on the stack from inside `rc_runtime_do_frame()`, so that's a race condition between the thread calling `rc_runtime_do_frame()` and the event queue thread.
2023-10-11 10:32:11 +02:00
iwubcode b251194a7e VideoCommon: wait for the GPU to be finished doing any work before invalidating pipelines when graphic config changes 2023-10-10 18:17:24 -05:00
Admiral H. Curtiss 6aadfd522b
Merge pull request #12225 from AdmiralCurtiss/resolution-dropdown-fix
Qt/EnhancementsWidget: Fix size of resolution dropdown.
2023-10-10 19:29:22 +02:00
iwubcode 0e8f8ea930 VideoCommon: instead of using 'CustomTextureData' directly, use 'TextureData' for texture assets, this allows us to provide additional metadata for textures. Such as a sampler or type information (to distinguish cube maps) 2023-10-10 09:58:14 -05:00
Admiral H. Curtiss 7b32530de6
Qt/EnhancementsWidget: Fix size of resolution dropdown. 2023-10-10 15:03:49 +02:00
Admiral H. Curtiss 1b7a590b4b
Merge pull request #12209 from JosJuice/frsqrte-exp-lsb
PowerPC: Flip the order of frsqrte_expected
2023-10-10 10:38:07 +02:00
Admiral H. Curtiss 410ec83575
Merge pull request #12213 from dreamsyntax/128_CODE_SIZE_AND_FARCODE_SIZE
Jit64: Increase farcode & nearcode cache size
2023-10-10 10:35:23 +02:00
Admiral H. Curtiss 9ebb52537e
Merge pull request #12217 from malleoz/savestate_lz4
Savestates: Use LZ4 algorithm for faster decompression
2023-10-10 10:34:38 +02:00
sowens99 1eaa9380dd Savestates: Use LZ4 algorithm for faster decompression 2023-10-08 20:45:49 -04:00
Nicola Vella b506bdc401
Fix heap buffer overflow in GCMemcardRaw 2023-10-08 15:13:41 +02:00
Nicola Vella 31dfb53152 Fix heap buffer overflow in GCMemcardRaw 2023-10-06 19:30:03 +02:00
iwubcode 713454b7d7 Metal: update binding mapping for SPRV due to change for custom shader uniforms in other backends (Metal is still not supported)
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-10-06 02:17:43 -05:00
iwubcode a099f4f41b VideoCommon: given the changes to pipeline interaction, update the global version variable to reflect those changes and force pipelines to be rebuilt 2023-10-06 02:17:43 -05:00
iwubcode 751356af47 VideoCommon: avoid Vulkan validation errors when custom shader ubo isn't set up
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-10-06 02:17:43 -05:00
iwubcode b6d321bfb1 VideoBackends / VideoCommon: add new uniform buffer object for custom shader materials (slot 3, geometry shader buffer moves to slot 4 if available) 2023-10-06 02:17:42 -05:00
iwubcode 92accc3ef7 VideoCommon: add custom pixel shader constants as a buffer of data to be passed to all backends 2023-10-05 21:20:16 -05:00
Filoppi 8027c88e58 Video: add support for 12x resolution multiplier 2023-10-06 01:12:10 +03:00
dreamsyntax 219610d8a0 Jit64: Increase nearcode/farcode size 2023-10-04 13:05:09 -07:00
Admiral H. Curtiss beebe0a200
Core/BBA/BuiltIn: Replace IP_PROTOCOL with IPV4_ETHERTYPE to avoid conflict with Linux headers. 2023-10-04 16:13:16 +02:00
Admiral H. Curtiss 68c9362449
Merge pull request #12089 from stblr/gamecube-zelda-hle-in-wii-mode
GameCube Zelda HLE in Wii mode
2023-10-04 06:57:01 +02:00
sowens99 69ec239a1f Add lz4 submodule 2023-10-02 17:28:23 -04:00
Admiral H. Curtiss da6339a722
Merge pull request #12026 from LillyJadeKatrin/retroachievements-measured
RetroAchievements - Progress Notifications
2023-10-01 19:25:02 +02:00