summaryrefslogtreecommitdiff
path: root/Source/Core
AgeCommit message (Collapse)Author
2026-09-21Merge pull request #14883 from AdmiralCurtiss/zelda-hle-voice-flagsJosJuice
DSPHLE/Zelda: Add bounds check for m_sync_voice_skip_flags in RenderAudio()
2026-09-21Merge pull request #14882 from JosJuice/gci-folder-block-indexJosJuice
GCMemcardDirectory: Add bounds check for m_save_data
2026-09-20DSPHLE/Zelda: Add bounds check for m_sync_voice_skip_flags in RenderAudio()Admiral H. Curtiss
2026-09-20Merge pull request #14833 from JosJuice/state-nand-tasJosJuice
IOS/FS: Fix loading savestate while TASing
2026-09-20GCMemcardDirectory: Check if UsesBlock result is non-negativeJosJuice
The only negative result UsesBlock can return is -1, so this change doesn't affect anything in practice, but makes the intent a little bit clearer.
2026-09-20GCMemcardDirectory: Add bounds check for m_save_dataJosJuice
2026-09-20IOS/FS: Fix loading savestate while TASing, part 2JosJuice
When calling CreateDirectory for /wfs, we were passing a UID of 19, because that is the UID /wfs is supposed to have. However, CreateDirectory returns AccessDenied if we try to create a directory in the root using a UID other than 0. To fix this, let's use UID 0 to create the directory, and then change the UID and GID afterwards using SetMetadata. This is what the ESCore constructor does, which is the piece of code that normally creates /wfs.
2026-09-20IOS/FS: Fix loading savestate while TASing, part 1JosJuice
When TASing, we savestate not just /tmp but also /. The code that was added in d35fe1b didn't handle recreating / correctly. This commit fixes the problem by skipping recreating /, which is fine since it always exists.
2026-09-20Merge pull request #14867 from brad0/openbsd_build_fixJosJuice
Fix building on OpenBSD
2026-09-17Merge pull request #14868 from JoshuaVandaele/index-regressionAdmiral H. Curtiss
NetPlayIndex: Fix regression introduced in #14738
2026-09-17Merge pull request #14869 from cristian64/ram_override_iosAdmiral H. Curtiss
Core: Fix RAM override setup in IOS.
2026-09-17Merge pull request #14832 from JoshuaVandaele/windeployqt-fixAdmiral H. Curtiss
DolphinQt: Properly define QtPaths
2026-09-15Core: Fix RAM override setup in IOS.cristian64
This is a correction for 0cab1731d6 (part of #14665), where it was overlooked that the condition to enable the RAM override was flawed: if the user had enabled the emulated memory size override in Dolphin, but the running game did not define a simulated memory size greater than the retail memory size, the RAM override in IOS was wrongly misconfigured, causing issues with Wii games. Test plan: - Launch Dolphin. - In the **Settings > Advanced** section, tick the **Enable Emulated Memory Size Override** check box, and set the maximum memory size for both **MEM1** and **MEM2** (i.e. 64 MiB and 128 MiB respectively). - Play any Wii game (e.g. _Mario Kart Wii_ (RMCE01)). **Without** the patch, the emulator will hit an invalid read from `0x83FEE78C` at `0x8019FE6C`: <img alt="Invalid read when starting Wii game after having enabled the emulated memory override in Dolphin" title="Invalid read when starting Wii game after having enabled the emulated memory override in Dolphin" src="https://github.com/user-attachments/assets/1777485e-a421-4303-8d3d-dd49f1aaa9bf" /> **With** the patch, the emulator can execute the game as usual.
2026-09-15NetPlayIndex: Fix regression introduced in 14738Joshua Vandaële
For some reason, #14738 removed the headers and allowed return codes which broke using the Netplay index for users. Also, bools converted to a string using std::to_string would become 0/1, while fmt::format by default turns them into false/true, which also broke the index.
2026-09-15Fix building on OpenBSDBrad Smith
- OpenBSD does not have SO_NOSIGPIPE - Enable some socket related code in AMMediaboard.cpp on OpenBSD
2026-09-07RetroAchievements - Fix Achievement Progress ToggleLillyJadeKatrin
The RA_PROGRESS_ENABLED flag was added but not currently being invoked, this makes sure it is checked before popping up progress messages.
2026-09-06Revert "VideoCommon: Use correct size for PE token"Link Mauve
This reverts commit e4349ae1791dec688d91c6813eeadf049a8c73ec. The 0x prefix is included in the characters count (unlike e.g. in Rust where there is no 0x prefix), so that commit was wrong. Sorry about that! Fixes regression introduced in #14842.
2026-09-05Merge pull request #14817 from JosJuice/android-netplay-versionDentomologist
Common: Add Android to GetNetplayDolphinVer
2026-09-06Merge pull request #14789 from phire/optimise_vs_uidScott Mansell
Optimize vertex_shader_uid_data down to 28 bytes
2026-09-06Merge pull request #14843 from linkmauve/better-dff-error-messageScott Mansell
Core: Improve error message on empty dff
2026-09-06Merge pull request #14842 from linkmauve/pe-token-2-bytesScott Mansell
VideoCommon: Use correct size for PE token
2026-09-05Merge pull request #14838 from OatmealDome/mac-memory-increase-failJosJuice
MemArenaDarwin: Pass the MAP_MEM_VM_SHARE flag to mach_make_memory_entry_64
2026-09-04HW/EXI: Don’t dereference one item past end of arrayLink Mauve
Dolphin would previously crash while accessing &buffer[got], as if we were trying to access that element instead of just obtaining a pointer to it. The proper solution is to obtain a pointer to the first element, and only add the offset we want to get the range. Here is the printed message: /usr/include/c++/16/array:210: constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](size_type) [with _Tp = char; long unsigned int _Nm = 128; reference = char&; size_type = long unsigned int]: Assertion '__n < this->size()' failed. The stack trace originates from: Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp:139
2026-09-03Merge pull request #14830 from JoshuaVandaele/sdl-miscsJosJuice
SDLGamepad: Add Misc 2 through 6
2026-09-03Merge pull request #14686 from JoshuaVandaele/sdl-touchpadsJosJuice
SDLGamepad: Support multiple touchpads
2026-09-03Core: Improve error message on empty dffLink Mauve
This also lets us remove the comment, which is now unnecessary.
2026-09-03VideoCommon: Use correct size for PE tokenLink Mauve
This token is a u16, not a u24, so let’s not display unnecessary 00 padding.
2026-09-01MemArenaDarwin: Pass the MAP_MEM_VM_SHARE flag to mach_make_memory_entry_64OatmealDome
Large anonymous mappings are split into 128 MB chunks. Without MAP_MEM_VM_SHARE, mach_make_memory_entry_64 will only return an entry spanning the first chunk. Attempting to map through that entry will fail if it extends beyond the 128 MB boundary, which can happen when the sizes of MEM1/MEM2 are overridden.
2026-08-31VideoCommon: separate out reinterpret and palette texture creation from ↵iwubcode
rendering
2026-08-30DolphinQt: Properly define QtPathsJoshua Vandaële
This fixes cross-compilation on Windows, where windeplotqt would previously always grab the host's DLLs instead of the target's.
2026-08-29Merge pull request #14818 from JoshuaVandaele/gridview-titleDentomologist
GameList: Enable word wrap in grid view
2026-08-29Merge pull request #14824 from JosJuice/save-controller-to-dtmJosJuice
Core: Fix controllers resetting when starting input recording
2026-08-28SDLGamepad: Add Misc 2 through 6Joshua Vandaële
SDL 3 has more misc buttons for "additional controller buttons" (e.g. left/right trigger clicks on a GameCube controller, or for the second touchpad click on the Steam Controller) which use these additional named Misc buttons. Taken from [SDL_GamepadButton](https://wiki.libsdl.org/SDL3/SDL_GamepadButton)
2026-08-27Merge pull request #14718 from JosJuice/android-vibration-lengthJMC47
Android: Make vibration length variable
2026-08-24Core: Fix controllers resetting when starting input recordingJosJuice
200e26c added controller handling to MovieConfigLayerLoader's LoadFromDTM but not SaveToDTM. This caused a regression. When starting a new input recording, MovieManager::BeginRecordingInput calls SaveToDTM, which doesn't set the controller values in the DTM header to anything. Then it loads the newly created movie config layer, causing LoadFromDTM to be called, which in turn causes zeroed out controller values to be loaded from the DTM header. This leaves the player with all controllers set to None, making it impossible to control the game. To fix this, let's move the saving of controllers from MovieManager::SaveRecording to ConfigLoaders::SaveToDTM.
2026-08-24DolReader: correctly save section index of ancastDacoTaco
2026-08-23Merge pull request #14736 from tom-pratt/wii-controller-netplayJMC47
Auto assign wii controllers in netplay
2026-08-21Common: Add Android to GetNetplayDolphinVerJosJuice
This makes Android players show up as "Android" instead of "Lin". (This is only visible in DolphinQt, not in the Android GUI.) I'm also unabbreviating all the existing operating system names: * Win -> Windows * Mac -> macOS * Lin -> Linux
2026-08-20Merge pull request #14800 from dreamsyntax/winupdater-vcredistOatmealDome
Require VS2026; Update Redist WinUpdater Pulls
2026-08-19Merge pull request #14821 from SuperSamus/mmu-try-read-non-integral-fixupAdmiral H. Curtiss
MMU: Fix non-integral HostTryRead not passing space
2026-08-19MMU.h: Remove useless consts in declarationsMartino Fontana
Since the issue solved by the previous commit was spotted with clang-tidy, let's also fix its other complaints. https://clang.llvm.org/extra/clang-tidy/checks/readability/avoid-const-params-in-decls.html
2026-08-19MMU: Fix non-integral HostTryRead not passing spaceMartino Fontana
Randomly spotted. Didn't test, but it was obviously wrong. Fixes regression from 8a97ce9124c94f868b078d67208f81795f259323.
2026-08-19Debugger: Fix symbol search speedMartino Fontana
Having Qt query a setting for every symbol isn't efficient. Fixes regression introduced by #13216.
2026-08-18DolReader: Don't error on dol section alignment on WiiDacoTaco
2026-08-16GameList: Enable word wrap in grid viewJoshua Vandaële
2026-08-13DSP: Fix `Off-by-one` clamping errorDr. Dystopia
2026-08-10Merge pull request #14808 from phire/ZeldaHLE_overflowOatmealDome
Fix stack overflow in ZeldaHLE
2026-08-11Fix stack overflow in ZeldaHLEScott Mansell
Independently spotted by both @Dentomologist and me while reviewing PR #14805 The previous limit was correct for valid VPBs, but an invalid VPB controlled by a malicious game could contain a non-fractional value in current_pos_frac, which would allow writing an extra 15 samples (30 bytes) into the stack. With AFC encoding, this is rounded up to 16 samples, but with much less control over which bytes are written. Maybe we should be doing some validation, or bounds checking, but I'm pretty sure this issue was copied from the original ucode, and we kinda want to stay compatible. The simpler fix is to just increase the size of raw_input_samples. I've checked other code paths, and 0x514 samples seems to be the limit.
2026-08-10SDLGamepad: Support multiple touchpadsJoshua Vandaële
2026-08-09DSPHLE/Zelda: prevent out-of-bounds stack readTillmann Karras
Reported by @RickdeJager.