summaryrefslogtreecommitdiff
path: root/Source/Core
AgeCommit message (Collapse)Author
13 daysCore: log invalid ELF inputActs1631
Log each rejected ELF header, range, and symbol reference. This provides actionable diagnostics for malformed files without changing the validation behavior.
13 daysCore: validate standalone ELF input rangesActs1631
ElfReader trusted table offsets and counts from standalone ELF files. Malformed input could make it read and write past the loaded file buffer. Validate the ELF header, table ranges, segment data, section data, and string-table references before accessing them. Invalid files use the existing executable boot failure path.
13 daysIOS/NetIPTopDevice: Zero-initialize sockaddr structsAdmiral H. Curtiss
Fixes https://github.com/dolphin-emu/dolphin/security/advisories/GHSA-5fqv-9qrg-gm4j
2026-07-19NetPlay: bound LZO decompression outputActs1631
NetPlay save synchronization decoded remote LZO blocks with the unsafe decoder and no output capacity. A malicious host could overflow a client buffer with a block larger than its declared size. Use the bounds-checking decoder, validate the declared output length, and grow buffer results only after each checked block has been decoded.
2026-07-19GameFile: Disallow mods from being convertedJoshua Vandaële
2026-07-18Merge pull request #14673 from tommywaaf/android-dolphinbar-balance-boardJosJuice
Android: Route DolphinBar Balance Board to the Balance Board slot
2026-07-16Merge pull request #14726 from JosJuice/gcadapter-deregister-on-thread-endScott Mansell
GCAdapter: Deregister callback when scan thread exits
2026-07-15Merge pull request #14732 from khang06/small-tmd-checkAdmiral H. Curtiss
IOS/ES: Prevent reading TMDs that are too small
2026-07-15waterfall loading of textures via id to prefer elfid-gameid when launched ↵cbartondock
via elf; fallback to gameid if no match
2026-07-15IOS/ES: Prevent reading TMDs that are too smallKhang
2026-07-15Merge pull request #14222 from Sintendo/ppcsymboldb-lookupScott Mansell
PPCSymbolDB: Avoid double lookups
2026-07-15Merge pull request #14651 from DacoTaco/fixes/dolalignmentScott Mansell
fixes: make dolreader validate section addresses and sizes
2026-07-15Merge pull request #14722 from idkwhere1sthisname/masterScott Mansell
IOS/ES: allow Wii System Transfer and WagonCompat Transfer Tool to pass SetUID check
2026-07-14Merge pull request #14705 from JosJuice/directoryblob-dtk-commentDentomologist
DiscIO: Add DTK alignment comment in DirectoryBlob
2026-07-14Merge pull request #14723 from ↵Admiral H. Curtiss
Dentomologist/resource_pack_manager_fix_crash_when_removing_pack ResourcePackManager: Fix crash when removing pack and properly update list
2026-07-14Merge pull request #14719 from cscd98/m3u-fixAdmiral H. Curtiss
m3u: normalize line endings except win32
2026-07-14DiscIO: Add DTK alignment comment in DirectoryBlobJosJuice
This requirement came up in the review of e013d95. Instead of just removing the comment like e013d95 did, let's add a more detailed comment.
2026-07-14Merge pull request #14729 from JoshuaVandaele/fix-clang-libstdcppScott Mansell
PerformanceMetrics: Fix compiling using clang&libstdc++
2026-07-12Merge pull request #14643 from ↵Dentomologist
Dentomologist/windows_git_bash_fix_command_line_output Windows: Fix command line output not displaying when using Git Bash
2026-07-13Merge pull request #14728 from Simonx22/android/api37-ndk30-dependency-updatesOatmealDome
Android: Update dependencies and build tools
2026-07-13PerformanceMetrics: Fix compiling using clang&libstdc++Joshua Vandaële
When using clang and libstdc++, compiling fails with these errors: ``` FAILED: [code=1] Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o /usr/sbin/ccache /usr/sbin/clang++ -DAUTOUPDATE=1 -DDATA_DIR=\"/usr/local/share/dolphin-emu/\" -DHAS_OPENGL -DHAS_VULKAN -DHAVE_CPPIPC -DHAVE_LIBSYSTEMD -DIMGUI_USER_CONFIG=\"imgui_user_config.h\" -DLZMA_API_STATIC -DOFF -DPUGIXML_NO_EXCEPTIONS -DRC_CLIENT_SUPPORTS_HASH -DSFML_STATIC -DSPNG_STATIC -DTINYGLTF_NOEXCEPTION -DTINYGLTF_NO_EXTERNAL_IMAGE -DTINYGLTF_USE_CPP14 -DUSE_ANALYTICS=1 -DUSE_MEMORYWATCHER=1 -DUSE_PIPES=1 -DUSE_RETRO_ACHIEVEMENTS -DZSTD_MULTITHREAD -D_ARCH_64=1 -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_M_X86_64=1 -D__LIBUSB__ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/dolphin-local/Source/Core -I/dolphin-local/Externals/picojson -I/dolphin-local/build/release/x64/Source/Core -I/dolphin-local/Externals/enet/enet/include -I/dolphin-local/Externals/fmt/fmt/include -I/dolphin-local/Externals/mbedtls/include -I/dolphin-local/Externals/minizip-ng/minizip-ng -I/dolphin-local/Externals/liblzma/api -I/dolphin-local/Externals/zstd/zstd/build/cmake/../../lib -I/dolphin-local/Externals/libiconv/include -I/dolphin-local/build/release/x64/Externals/libiconv/lib -I/dolphin-local/Externals/libiconv/libcharset/include -I/dolphin-local/build/release/x64/Externals/libiconv/libcharset -I/dolphin-local/Externals/SFML/SFML/include -I/dolphin-local/Externals/bzip2/bzip2 -I/dolphin-local/Externals/expr/include -I/dolphin-local/Externals/hidapi/hidapi-src/hidapi -I/dolphin-local/Externals/pugixml/pugixml/src -I/dolphin-local/Externals/glslang/glslang/glslang/.. -I/dolphin-local/build/release/x64/include -I/dolphin-local/Externals/rcheevos -I/dolphin-local/Externals/libspng/libspng/spng -I/dolphin-local/Externals/xxhash/xxHash -I/dolphin-local/Externals/imgui -I/dolphin-local/Externals/imgui/imgui -I/dolphin-local/Externals/implot/implot -I/dolphin-local/Externals/glslang/glslang/SPIRV/.. -I/dolphin-local/Externals/tinygltf -isystem /dolphin-local/Externals/libusb/libusb/libusb -isystem /dolphin-local/Externals/glslang/glslang -isystem /dolphin-local/Externals/glslang/glslang/Public -isystem /dolphin-local/Externals/glslang -Qunused-arguments -fcolor-diagnostics -O3 -DNDEBUG -std=c++23 -msse2 -fdiagnostics-color -fno-strict-aliasing -fno-exceptions -fvisibility-inlines-hidden -fvisibility=hidden -fomit-frame-pointer -Wall -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wshadow -Wshadow-field-in-constructor -Winit-self -Wmissing-declarations-Wmissing-variable-declarations -Werror=format -Wno-trigraphs -MD -MT Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o -MF Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o.d -o Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o -c /dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.cpp In file included from /dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.cpp:4: /dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.h:69:51: error: no matching constructor for initialization of 'std::atomic<FrameBufferSize>' 69 | std::atomic<FrameBufferSize> m_frame_buffer_size{}; | ^~ /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:237:17: note: candidate constructor not viable: constraints not satisfied 237 | constexpr atomic() noexcept(is_nothrow_default_constructible_v<_Tp>) | ^ /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:238:11: note: because 'is_default_constructible_v<PerformanceMetrics::FrameBufferSize>' evaluated to false 238 | requires is_default_constructible_v<_Tp> | ^ /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:246:7: note: candidate constructor not viable: requires 1 argument, but 0 were provided 246 | atomic(const atomic&) = delete; | ^ ~~~~~~~~~~~~~ /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:252:17: note: candidate constructor not viable: requires single argument '__i', but no arguments were provided 252 | constexpr atomic(_Tp __i) noexcept : _M_i(__i) | ^ ~~~~~~~ 1 error generated. ``` This was tested and occurs on both Arch and Alpine Linux.
2026-07-12Android: Update dependencies and build toolsSimonx22
Update Android dependencies and build tools to their latest available versions. Rename the GameCube save magic constant to avoid a collision with the NDK 30 ARM64 signal context header.
2026-07-12m3u: normalize line endings except win32Craig Carnell
2026-07-12GCAdapter: Deregister callback when scan thread exitsJosJuice
We were registering the hotplug callback when starting the thread, but deregistering it when shutting down GCAdapter as a whole. Because the thread can start and stop potentially many times before GCAdapter shuts down, this led to callbacks being registered when we already have callbacks. On Android, this was making Dolphin's Kotlin code for registering the callback throw an IllegalStateException. To fix this, deregister the callback when stopping the thread.
2026-07-11DolphinQt: Update tool tip for Enable Emulated Memory Size Override.cristian64
2026-07-11Core: Adjust emulated memory size automatically.cristian64
Dolphin now uses the simulated memory size defined in `bi2.bin` to adjust the memory size in the emulated console automatically. If **Enable Emulated Memory Size Override** has been enabled by the user, the fixed memory size specified for **MEM1** and **MEM2** are still used as they were before. Most retail games do not define the simulated memory size (Wii or Triforce games), or define it to a value that matches the default 24 MiB (GameCube games), so, in the general case, there is no behavior change. One game that sets the simulated memory to a non-default value is the debug build of _Mario Kart: Double Dash!!_, where the value is set to 48 MiB. This enhancement is focused mainly to the modding community. Prior to these changes, modded games with extended memory requirements would fail to launch in Dolphin [with no indication of what the problem is] if the user failed to set the emulated memory override to the correct value. Now, modding tools can specify the simulated memory size in the `bi2.bin` file to produce extended games that _just work_ in Dolphin, without cumbersome instructions that can be overlooked by the user.
2026-07-11DolphinAnalytics: Add game quirk for game simulated memory size.cristian64
This is the 32-bit unsigned integer that is seen at offset `0x04` in the `bi2.bin` file. The intent is to study what games define values that departure from the norm. Common values are 0 MiB (Wii games) and 24 MiB (GameCube games), with some debug and demo builds featuring 48 MiB (e.g. the debug build of _Mario Kart: Double Dash!!_).
2026-07-11Core: Add `SConfig::GetSimulatedMemorySize()`.cristian64
This makes the simulated memory size of the running game accessible via the `SConfig` singleton.
2026-07-11Core: Add `Volume::GetSimulatedMemorySize()`.cristian64
The data structure of the `bi2.bin` file in which the simulated memory size is set: > **13.2 Disk header Information** > > this is loaded to the Address in `0x800000f4` when a disc is initialized by the IPL > > | offset | end | size | Description | > | :------: | --- | :--: | --------------------- | > | `0x0000` | | 4 | Debug-monitor Size | > | `0x0004` | | 4 | Simulated Memory Size | > | `0x0008` | | 4 | Argument offset | > | `0x000c` | | 4 | Debug flag | > | `0x0010` | | 4 | Track Location | > | `0x0014` | | 4 | Track size | > | `0x0018` | | 4 | Countrycode | > | `0x001c` | | 4 | ? | See https://hitmen.c02.at/files/yagcd/yagcd/chap13.html#sec13.2. Most GameCube games set the value to `24 MiB`, which matches the physical memory size. Most Wii games set the value to `0 MiB` (unset). The debug build of _Mario Kart: Double Dash!!_ is one game that sets the value to `48 MiB`.
2026-07-11ResourcePackManager: Erase Removed pack from list and tableDentomologist
Erase a removed pack from ResourcePack::<anonymous namespace>::packs instead of only deleting the pack file from the disk. This causes the repopulated table to actually display that the pack has been removed (which previously only happened after restarting Dolphin or hitting `Refresh`), and also removes the pack from the `Packs.ini` file.
2026-07-11ResourcePackManager: Fix crash when removing packDentomologist
Avoid accessing destroyed `QTableWidgetItem` by retrieving the desired path from the item before it's destroyed. In `ResourcePackManager::Remove` pointers to the selected items in `m_table_widget` were saved in the local variable `items` before calling `Uninstall`. `Uninstall` called `RepopulateTable` which called `m_table_widget->clear()`, destroying the table's descendants. Upon returning to `Remove` `items` then pointed to some of those destroyed descendants, and passing `items[0]` to `GetResourcePackIndex` resulted in a call to `item->row()` which was a use-after-free. Fixes https://bugs.dolphin-emu.org/issues/14095.
2026-07-11allow Wii System Transfer and WagonCompat to call ES_SetUIDidkwhere1sthisname
2026-07-08GameSettings: Approve speed hacks for RetroAchievementsMartino Fontana
Some of the speed hacks were not approved for RetroAchievements, meaning that users had to choose between not getting hardcore achievements, or having poor performance. Also, renamed the instances of `$Limit internal FPS to VPS (improves performance)` to `$Limit internal frame rate (speed hack)` for consistency. They are enabled by default, so unless the user disabled them, it won't break the configuration.
2026-07-08mingw: lower case windows includesCraig Carnell
2026-07-06Android: Route DolphinBar Balance Board to the Balance Board slottommywaaf
WiimoteScannerAndroid::FindAttachedWiimotes() added every device connected through the DolphinBar to the Wii Remote results, with a TODO noting that balance boards were not differentiated. As a result, a Wii Balance Board connected through the DolphinBar was always assigned to a Wii Remote slot (Player 1), and games that request a Balance Board never detected it. Use Wiimote::IsBalanceBoard() to route balance boards into the balance_boards results, matching the Linux and Windows scanner backends. Tested on an AYN Thor (Android 13) with a Mayflash DolphinBar in Mode 4 running Wii Fit Plus: the board is now detected in the Balance Board slot.
2026-07-05Merge pull request #14689 from JosJuice/android-internal-resolution-displayDentomologist
VideoCommon: Use XFB for internal resolution stats
2026-07-05Merge pull request #14417 from TryTwo/Cheat_FixJosJuice
Bugfix: Cheat codes: Make newly added codes start disabled.
2026-07-05Merge pull request #13216 from CelestialAmber/cw-demanglerJosJuice
Core: Implement automatic symbol demangling
2026-07-05Merge pull request #14619 from JosJuice/no-si-change-deviceJosJuice
Core: Remove SerialInterfaceManager::ChangeDevice
2026-07-05Merge pull request #14678 from JoshuaVandaele/alt-toolsJosJuice
MenuBar: Add missing Alt shortcuts in Tools
2026-07-05Merge pull request #14516 from Sintendo/jitarm64-subfzexJosJuice
JitArm64: Minor subfzex optimizations
2026-07-05Merge pull request #14707 from SuperSamus/jit64-computerc-better-early-flushJosJuice
Jit64: Early flush in ComputeRC even when `needs_test`
2026-07-05Rename "Show Internal Resolution" to "Show XFB Resolution"JosJuice
To make it extra clear that this is measuring the XFB, not the EFB.
2026-07-05Move the code for the show internal resolution settingJosJuice
fb4ff3e put all the code for the show internal resolution setting right next to the code for the show FPS setting, presumably because an earlier version of that commit had them next to each other in the GUI. It makes more conceptual sense to put the code next to the code for the show statistics settings, matching what the GUI looks like now.
2026-07-05VideoCommon: Show internal resolution stats below VPSJosJuice
It looked a bit out of place wedged in between the FPS and VPS.
2026-07-05VideoCommon: Use XFB for internal resolution statsJosJuice
fb4ff3e added a statistics option to show the internal resolution, but it just showed the total size of the EFB (which is always 640x528) times the IR scale, so it didn't convey any useful information. This commit instead makes the option use the size of the last XFB copy (not multiplied by the IR scale), which changes based on the game's rendering resolution.
2026-07-05VideoCommon: Reduce padding in PresentInfoJosJuice
This makes the struct 8 bytes smaller.
2026-07-03Windows: Fix command line output not displaying when using Git BashDentomologist
Check if Dolphin already has a handle for stdout or stderr before trying to attach to the console of the parent process. Previously, running Dolphin via Git Bash with options like `--help` or `--version` wouldn't produce any output. This was the result of the fix (1ce75ce21706a8dd9662e77ac9d09de1976f4733) for https://bugs.dolphin-emu.org/issues/11042, before which output did work for `Git Bash` but didn't for `Command Prompt` or `PowerShell`.
2026-07-01Merge pull request #14699 from JosJuice/android-vibrator-id-indexDentomologist
Android: Fix mixup between Vibrator id and index
2026-06-29Merge pull request #14708 from JosJuice/state-path-encodingAdmiral H. Curtiss
State: Use proper path encoding conversion for OSD messages