summaryrefslogtreecommitdiff
path: root/Source/Core
AgeCommit message (Collapse)Author
2025-11-14DolphinQt: Define tool tip padding as factor of font size.cristian64
2025-11-13Externals: Update mGBA to latest master.Jordan Woyak
Co-authored-by: Joshua Vandaële <joshua@vandaele.software>
2025-11-13Core/Boot: Fix ELF load address semanticstechflashYT
Tested with a binary that has VMA != (LMA | 0x80000000), unlike most libogc binaries. This is indeed a valid setup for ELFs, and one that is generally expected to work properly. Test code: https://github.com/Wii-Linux/NPLL/tree/reloc In either case, you still need to set the PC in the debugger to get it to boot properly, though that is a different issue that I will be fixing in a future patch. Without this patch, the code to be runtime-relocated ends up already loaded at the desired final address, and then when the code tries to relocate from what it thinks is the source address (where the code should be, where the LMA is) to the destination address (the VMA, where Dolphin mistakenly already put the code), it ends up overwriting the code that it is about to execute with garbage, and then promptly crashing. After this patch is applied, the behavior now matches the GameCube with Swiss (assuming a [recent patch](https://github.com/emukidid/swiss-gc/commit/bb4a57186c1481e291b7b0ea6d8e722bab816042) is applied), and the Wii with the Homebrew Channel.
2025-11-12Core: Eliminate FreeLookConfig by putting the "active config" within ↵Jordan Woyak
FreeLookCamera.
2025-11-12Merge pull request #14100 from AndrewGDX/masterJordan Woyak
Improved stereoscopic 3D settings
2025-11-12Improved stereoscopic 3D settingsAndrewGDX
2025-11-12Fix cheats always enabled without USE_RETRO_ACHIEVEMENTSCraig Carnell
2025-11-12DolphinAnalytics: Only call ReloadConfig in config changed callback when ↵OatmealDome
analytics enabled value changes Co-authored-by: Simonx22 <simon@oatmealdome.me>
2025-11-11VideoCommon/PerformanceMetrics: Display current offset between the latest ↵Jordan Woyak
frame presentation time and the intended presentation time in the "Show Frame Times" box.
2025-11-11VideoCommon: Add "Smooth Early Presentation" setting to improve frame pacing ↵Jordan Woyak
with ImmediateXFB and/or RushFramePresentation.
2025-11-11VideoCommon: Make Presenter aware of the next swap time to eliminate unsafe ↵Jordan Woyak
usage of GetTicks() with ImmediateXFB + DualCore.
2025-11-11HW/VideoInterface: Selectively throttle on "VBlank" based on "Immediate XFB" ↵Jordan Woyak
being enabled.
2025-11-11CoreTiming: Add "Rush Frame Presentation" setting to throttle only once ↵Jordan Woyak
after each presentation for lower input latency.
2025-11-11Merge pull request #14096 from jordan-woyak/state-changed-hookable-eventJMC47
Core: Make AddOnStateChangedCallback use HookableEvent.
2025-11-11Merge pull request #14071 from iwubcode/avoid_config_framebuffer_managerJMC47
VideoCommon: pass the EFB buffer scale into the FramebufferManager
2025-11-11Merge pull request #14070 from VampireFlower/masterJMC47
Debugger: Ignore bctr when stepping out
2025-11-11Merge pull request #13236 from JosJuice/jit-set-msr-on-fallbackJMC47
Call JitInterface::UpdateMembase from PowerPC::MSRUpdated
2025-11-10Merge pull request #14052 from jordan-woyak/DirectIOFileJordan Woyak
Common and DiscIO: Introduce a thread safe DirectIOFile and make BlobReader implementations use it.
2025-11-10Core: Remove IsHostThreadJosJuice
The core no longer cares which thread is the host thread. Cleaning up Android's HostThreadLock is left for another PR, in part because the HostThreadLock in NativeConfig.cpp still serves a purpose, and in part to make any issues easier to bisect.
2025-11-10RetroAchievements: Remove MemoryPeeker/MemoryPoker's copying approachJosJuice
This makes the code simpler, and saves us from the slow operation of copying the all of RAM on every frame when RAIntegration is enabled.
2025-11-10Core: Let any thread call previously host-thread-only functionsJosJuice
By letting threads other than the host thread use things like CPUThreadGuard, we can do a significant cleanup in AchievementsManager in a later commit of this pull request. Note: Some functions still can't be called from the CPU thread (or threads the CPU thread might block on, like the GPU thread), but can be called from any other thread.
2025-11-10Merge pull request #13875 from JosJuice/jitarm64-orr-base-without-mirrorJosJuice
JitArm64: Add missing ORR pattern in MOVI2RImpl
2025-11-09CMake: Switch from SKIP_POSTPROCESS_BUNDLE to POSTPROCESS_BUNDLETellowKrinkle
2025-11-09Core: Make AddOnStateChangedCallback use HookableEvent.Jordan Woyak
2025-11-09MemTools: Clean up SIGSEGV handler.Jordan Woyak
2025-11-09Merge pull request #13956 from jordan-woyak/SA_RESTARTAdmiral H. Curtiss
Main: Add SA_RESTART to sigaction sa_flags.
2025-11-09Merge pull request #14010 from jordan-woyak/wmreal-iolinux-reopen-on-unplugAdmiral H. Curtiss
WiimoteReal/IOLinux: Reopen Bluetooth device if it was unplugged between scans.
2025-11-09Merge pull request #14022 from TryTwo/fix_balloontip_widthAdmiral H. Curtiss
Settings BalloonTip: Have wordwrap use max width.
2025-11-09Merge pull request #14073 from jordan-woyak/convert-dialog-min-sizeAdmiral H. Curtiss
DolphinQt: Make disc ConvertDialog have a better minimum size and use QFormLayout.
2025-11-09Merge pull request #14026 from jordan-woyak/move-only-function-fixAdmiral H. Curtiss
Common/Functional: Fix MoveOnlyFunction from inadvertently creating references from lvalues.
2025-11-09Merge pull request #14068 from iTrooz/open_folderAdmiral H. Curtiss
feat(profiles): add "open profiles folder" button + add dropdown button for profile actions
2025-11-09Merge pull request #14094 from OatmealDome/mac-nav-listAdmiral H. Curtiss
SettingsWindow: Set navigation list stylesheet in constructor
2025-11-09Common/IOFile: Remove the `Duplicate` function. The duplicate handles shared ↵Jordan Woyak
a read/write position making them effectively not thread-safe.
2025-11-09DiscIO: Make all BlobReader implementations use DirectIOFile to make ↵Jordan Woyak
CopyReader functionality thread safe.
2025-11-09Common/BitUtils: Add overloads of AsU8Span/AsWritableU8Span that handle ↵Jordan Woyak
conversions from contiguous ranges.
2025-11-09Common: Add a DirectIOFile class that allows for copies which are entirely ↵Jordan Woyak
thread safe.
2025-11-09SettingsWindow: Set navigation list stylesheet in constructorOatmealDome
2025-11-08CPUThreadConfigCallback: Use maximum value of size_t instead of -1 as ↵Simonx22
default value ConfigChangedCallbackID Co-Authored-By: OatmealDome <OatmealDome@users.noreply.github.com>
2025-11-08Merge pull request #14086 from Simonx22/android/use-native-analyticsOatmealDome
Android: Use the shared HTTP analytics backend
2025-11-08Merge pull request #14082 from Simonx22/analytics/reload-on-setting-changeOatmealDome
DolphinAnalytics: Reload backend when config changes
2025-11-08Android: Use the shared HTTP analytics backendSimonx22
We can now route Android analytics through Common::HttpAnalyticsBackend, drop the Volley sender, and keep the JNI layer limited to only transfer metadata since https://bugs.dolphin-emu.org/issues/11772 has been fixed.
2025-11-08Merge pull request #14020 from jordan-woyak/string-util-cleanupsJosJuice
StringUtil: Cleanups and add some character encoding conversion unit tests.
2025-11-08Config: Use maximum value of size_t instead of -1 as default value in ↵Simonx22
ConfigChangedCallbackID Co-authored-by: OatmealDome <julian@oatmealdome.me>
2025-11-08DolphinAnalytics: Reload backend when config changesSimonx22
Co-Authored-By: OatmealDome <julian@oatmealdome.me>
2025-11-08Merge pull request #13939 from ↵JosJuice
Dentomologist/logging_avoid_overwriting_debug_verbosity_in_release_builds Logging: Don't overwrite LDEBUG level in Release builds
2025-11-07Merge pull request #14074 from jordan-woyak/HookableEvent-no-stringsJordan Woyak
Common: Remove the string parameters from the HookableEvent interface.
2025-11-07Merge pull request #14079 from ↵Jordan Woyak
Dentomologist/use_asyncworkthread_pushblocking_instead_of_sync_event CubebStream: Use WorkQueueThread::PushBlocking instead of sync_event
2025-11-07CubebStream: Use WorkQueueThread::PushBlocking instead of sync_eventDentomologist
Push and wait on WorkQueueThread items using PushBlocking. Previously we created a Common::Event sync_event on the caller's stack, called Wait on it, then had the WorkQueueThread call Set on the sync_event once the thread was done. In addition to being simpler the new way avoids a use-after-free that could happen in convoluted and unlikely yet possible thread scheduling sequences. One such case can be triggered as follows: * Set your audio backend to Cubeb * In CubebStream::SetVolume set a breakpoint at the call to Wait and at the call to cubeb_stream_set_volume. * Start a game. * Continue until the Cubeb Worker thread hits the cubeb_stream_set_volume breakpoint and Emuthread hits the Wait breakpoint, freezing each thread when it hits its breakpoint. * Unfreeze Cubeb Worker. * In Event::Set set a breakpoint at the end of the scope containing the lock_guard such that the guard has been constructed but not destructed when the breakpoint is hit. * Continue until that breakpoint is hit by Cubeb Worker. If other threads hit it first keep going. * Freeze Cubeb Worker. * For convenience remove the breakpoint in Event::Set so other threads don't trigger it. * In CubebStream::SetRunning set a breakpoint at the call to Wait. * Unfreeze Emuthread and continue until the breakpoint is hit. * In Cubeb Worker go to Event::Set and examine the values of m_mutex's member variables. In Visual Studio Debug these are locking_thread_id == 0xcccccc01 and ownership_levels == 0xcccccccc. This is the result of Visual Studio overwriting the memory used on the stack by sync_event in CubebStream::SetVolume with cc bytes to represent uninitialized memory on the stack (since that function already returned), and then allocating enough memory on the stack when calling AudioCommon::SetSoundStreamRunning and then CubebStream::SetRunning that it overwrote one byte of the memory formerly occupied by locking_thread_id. * If you unfreeze Cubeb Worker at this point it will trigger the lock guard's destructor which will then try to unlock m_mutex. Since m_mutex is no longer in scope this is a use-after-free, and in VS debug triggers a debug assert due to locking_thread_id not matching the current thread id.
2025-11-07Merge pull request #13858 from ↵JosJuice
LillyJadeKatrin/retroachievements-message-adjustments Retroachievements message adjustments
2025-11-06Common: Remove the string parameters from the HookableEvent interface.Jordan Woyak