summaryrefslogtreecommitdiff
path: root/Source
AgeCommit message (Collapse)Author
2026-10-07VideoCommon: validate restored FIFO pointersActs1631
Save states restored video FIFO pointers from unchecked offsets. A crafted offset could place a pointer outside its backing allocation and turn the next gather-pipe copy into an out-of-bounds native write. Require pointer offsets to stay within their backing array and reject a state when either offset is invalid or the read pointer follows the write pointer.
2026-10-07NetPlay: reject oversized Wii save bannersActs1631
The save sync parser preserved an oversized banner length after limiting the copy into the fixed header buffer. The NAND writer then used the untrusted length and read beyond the stack object. Reject invalid or oversized lengths before copying the banner.
2026-10-07Assembler: Fix crash from assembling malformed sourceVampireFlower
2026-10-07MemArenaDarwin: Eliminate use of mach_make_memory_entry_64OatmealDome
2026-10-07NetPlayConfigLoader: Fix GCAdapter handling.Jordan Woyak
2026-10-07NetPlay: reject oversized input buffer messagesActs1631
A NetPlay host could send an arbitrary buffer size to a client. The client then tried to allocate input states until it reached that value. Limit buffer sizes to the existing user-interface maximum. Invalid peer values are ignored.
2026-10-07Request ACCESS_LOCAL_NETWORK permission on android 17 and upTom Pratt
Show the permission dialog the first time host or connect is clicked. While the permission is not granted, show an info box at the bottom of the netplay setup screen explaining the need for the permission with a button to grant permission. Launch the app settings menu where the permission can be granted manually if the user has denied twice previously preventing us from showing the permission dialog. Workarounds using the shouldShowRationale flag and detecting if the dialog showed via onPause to account for well known limitations in the android permissions API.
2026-10-07Fix android settings crash on API level 28 and lowerTom Pratt
These API levels don't allow color selectors to be used as backgrounds. Switch to MaterialDivider and set the color via dividerColor instead of background.
2026-10-07Android: Set abiFilters for ndkJosJuice
Normally, Dolphin APKs have a lib folder that contains two subfolders: arm64-v8a and x86_64. Both contain a libmain.so file, and arm64-v8a also contains additional .so files for libadrenotools. When we added netplay support for Android, we brought in Jetpack Compose as a dependency, which in turn made libandroidx.graphics.path.so be included in Dolphin APKs. Unfortunately, this .so file was included not only for arm64-v8a and x86_64, but also for armeabi-v7a and x86. This made Dolphin installable on devices that use one of these older ABIs, but because libmain.so is missing, trying to start Dolphin on such a device results in an instant crash. We have gotten a number of Google Play reviews from armeabi-v7a users complaining about this crash. This fixes the problem by setting abiFilters under ndk instead of under cmake, as documented at https://developer.android.com/ndk/guides/abis.
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-29Merge pull request #14750 from tom-pratt/netplay-controller-mappingJosJuice
Android: Netplay controller mapping
2026-08-29Merge pull request #14829 from TorresOwO/fix-skylanders-crash-13956JosJuice
Android: Fix Crash when loading Skylanders file
2026-08-28Fix netplay crash on pre API 31 devicesTom Pratt
TypedArray doesn't implement AutoCloseable on older devices so .use{} caused a crash. It turned out the special handling for background colours was unnecessary anyway.
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-26Android: Use OpenDocument for NFC figures and fix crash (Fixes #13956)Sergio Torres
- Switch from ActivityResultContracts.GetContent() to OpenDocument() which restores ACTION_OPEN_DOCUMENT behavior, granting write access to file descriptors opened in C++ via ContentHandler.openFd(). - Replace unsafe force-unwraps (!!) in EmulationActivity with null checks.
2026-08-24Android controller mapping UITom Pratt
UI for assigning netplay players to gamecube ports and wii remotes.
2026-08-24Netplay PlayerTable fixesTom Pratt
- Improve the column measurement logic so it updates the column width when text changes. - Use matchParentSize on the clickable target in OutlinedBox so that it is clickable when the OutlinedBox contains contents with dynamic height.
2026-08-24Add functionality to get and set controller mappings in AndroidTom Pratt