summaryrefslogtreecommitdiff
path: root/Source
AgeCommit message (Collapse)Author
2026-03-15Merge pull request #14469 from OatmealDome/backend-warningOatmealDome
GeneralWidget: Add protections against invalid values in BackendWarning()
2026-03-15Merge pull request #14461 from ↵OatmealDome
Dentomologist/wasapistream_handle_getbuffer_errors WASAPIStream: Fix crash when GetBuffer call fails
2026-03-15Triforce: Check only first byte in region flag.cristian64
In some Triforce games (e.g. _F-Zero AX_), the bytes that follow the region flag in the `boot.id` file (at `0x38`) happen to be `0x00`. However, in other games (e.g _Mario Kart Arcade GP 2_), it seems the region flag is padded with `0xFF`. _Mario Kart Arcade GP 2_ (`boot.id` in the USA version): ``` 00000 0000: 42 54 49 44 00 00 01 E0 00 00 00 01 00 00 00 01 BTID.... ........ 00000 0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........ 00000 0020: 47 43 41 4D 00 00 01 C0 07 D3 05 0F 00 00 00 07 GCAM.... ........ 00000 0030: 53 42 4E 4C 00 00 00 00 0E FF FF FF FF FF FF FF SBNL.... ........ ----------- ^ | region flag ``` When the region flag was tested in `switch` statements (where a single byte was expected in the `case`s), the test would fail, depending on the game. This issue would lead to the wrong calculation of the country in `VolumeDisc::GetCountry()`, which was then used to build the game ID in `VolumeDisc::GetGameID()`. The solution is to test using only the least meaningful byte in the region flag. Unexpected game IDs were first noticed with USA version of _Mario Kart Arcade GP 2_, which was wrongly assigned the same game ID that is given to the Japan version (i.e. `GNLJ82`). The correct game ID for the USA version is `GNLE82`.
2026-03-15Android: Remove version guards for API levels below 23 (Marshmallow)Simonx22
2026-03-15Merge pull request #14453 from Simonx22/android/bump-minsdk-to-24OatmealDome
Android: Raise minSdk to 24 (Android 7.0)
2026-03-15GeneralWidget: Add protections against invalid values in BackendWarning()OatmealDome
2026-03-15fmt: change use of fmt/base.h to fmt/format.h as not provided until fmt>=11.0Craig Carnell
2026-03-14System: Use forward declarations in System.hDentomologist
2026-03-14Move PerformanceMetrics from global variable to SystemMihai Brodschi
This avoids the static initialization order fiasco between Core and VideoCommon Co-authored-by: Jordan Woyak <jordan.woyak@gmail.com>
2026-03-14AMMediaboard: Increase NetworkCommandAddress2 rangeSepalani
2026-03-14AMMediaboard: Change the way socket descriptors are assignedSepalani
2026-03-13WASAPIStream: Fix crash when GetBuffer call failsDentomologist
Check the return value of calls to `GetBuffer` and stop the `WASAPI handler` sound thread if they fail. This prevents a crash due to a null pointer dereference if `GetBuffer` is unable to retrieve a buffer, which could be triggered during emulation by disabling the selected WASAPI output device in the Windows Sound settings.
2026-03-13Merge pull request #14123 from JosJuice/fix-logical-page-mappingsDentomologist
Memmap: Fix populating m_logical_page_mappings
2026-03-13GameList: Add status bar with game countDentomologist
The status bar shows the number of games in your collection. If any games are hidden by the platform, region, or search filters it will also show how many games are visible and how many are filtered. The visibility of the status bar can be toggled from the menu by selecting `View`->`Show Game Count`. Implements https://bugs.dolphin-emu.org/issues/9517.
2026-03-12HW/Triforce/SerialDevice: Add missing include to fix FreeBSD build.Jordan Woyak
2026-03-12Merge pull request #14409 from sepalani/tri-rw-logJMC47
AMMediaboard: Improve recv/send log messages
2026-03-12Merge pull request #14408 from sepalani/tri-eagainJMC47
AMMediaboard: Check for EAGAIN in WSAGetLastError
2026-03-12Merge pull request #14452 from jordan-woyak/triforce-avalon-touchscreenJMC47
Triforce: Implement The Key of Avalon's touchscreen.
2026-03-12Merge pull request #14442 from ↵Jordan Woyak
Dentomologist/performancemetrics_use_state_changed_hookableevent PerformanceMetrics: Use HookableEvent for state changed callback
2026-03-12Merge pull request #14172 from sepalani/usb-iso-retJMC47
IOS/USB: Add helper to set return values of IsoMessage's packets
2026-03-12Android: Raise minSdk to 24 (Android 7.0)Simonx22
Reasons: - Only 0.000341% of all Android users were on API 21-23 in the last 365 days. - These devices are old and likely do not run Dolphin well. - Android 5.x and 6.0 have been without security updates for about 8 years. - Staying on API 21–23 blocks AndroidX updates, including Lifecycle.
2026-03-12Merge pull request #14345 from TryTwo/cheat_search_workDentomologist
CheatSearch: Add ability to breakpoint the selected lines.
2026-03-12Merge pull request #14440 from JosJuice/optimize-remove-pageDentomologist
Core: Optimize RemoveHostPageTableMappings
2026-03-12Merge pull request #14427 from Simonx22/qt/cheats-gecko-download-error-messageJMC47
DolphinQt: Improve Gecko code download failure message
2026-03-12Merge pull request #14426 from ↵JMC47
Simonx22/android/convert-afterdirectoryinitializationrunner-to-kotlin Android: Convert AfterDirectoryInitializationRunner to Kotlin
2026-03-12Merge pull request #14424 from Simonx22/android/wii-update-callback-kotlinJMC47
Android: Convert WiiUpdateCallback to Kotlin
2026-03-12Merge pull request #14423 from ↵JMC47
Simonx22/android/convert-alertdialogitemsbuilder-to-kotlin Android: Convert AlertDialogItemsBuilder to Kotlin
2026-03-12Merge pull request #14422 from ↵JMC47
Simonx22/android/convert-tvsettingsviewholder-to-kotlin Android: Convert TvSettingsViewHolder to Kotlin
2026-03-12Merge pull request #14421 from Simonx22/android/convert-usbpermservice-to-kotlinJMC47
Android: Convert USBPermService to Kotlin
2026-03-12State: Increase STATE_VERSION.Jordan Woyak
2026-03-12Triforce: Implement The Key of Avalon's touchscreen.Jordan Woyak
Added SerialDevice base class interface. Adapted MagneticCardReader to use the SerialDevice interface. Implemented The Key of Avalon touchscreen SerialDevice. Altered CSIDevice_AMBaseboard to use SerialDevice. Made serial reads happen every GCAMCommand rather than only upon write.
2026-03-12State: Increase STATE_VERSION.Jordan Woyak
2026-03-12SI_DeviceAMBaseboard: Clean up RunBuffer.Jordan Woyak
Eliminated outer loop. Reduced memcpy'ing.
2026-03-12SI/SI_DeviceAMBaseboard: Expose the buffer size of 128 to eliminate some ↵Jordan Woyak
magic numbers.
2026-03-12SI_DeviceAMBaseboard: Use CreateStatusResponse to fix "RunSIBuffer: ↵Jordan Woyak
expected_response_length" WARN_LOGs.
2026-03-12SI_DeviceAMBaseboard: Add baseboard 0x70 command to ↵Jordan Woyak
SerialInterface::EBufferCommands enum to eliminate BaseBoardCommand enum.
2026-03-12SI_DeviceAMBaseboard: Remove unnecessary code.Jordan Woyak
2026-03-12Merge pull request #14401 from naari3/masterJordan Woyak
AMMediaboard: stub Triforce NETWORK TEST command handling
2026-03-12DolphinQt: Improve TAS UI WidgetsStavros Kosmas
Made Stick and IR Widgets bigger Improved Stick and IR layouts to better utilize space Made Stick and IR Widgets Scale at a fixed ratio when window is resized Added Scrollbars to Stick and IR Widgets Reduced Spinbox padding in dark style
2026-03-07PerformanceMetrics: Use HookableEvent for state changed callbackDentomologist
Use the normal state changed `HookableEvent` instead of having `Core::NotifyStateChanged` call `g_perf_metrics.OnEmulationStateChanged` directly. The direct call was added in bad78cfed416d89ceb6b0acf6c134d3691b3d624 to avoid a crash. At the time state changed callbacks were stored in a vector, and the crash was caused by `g_perf_metric`'s destructor trying to remove the callback from the already-destroyed vector. Later a97627e736ff352e031123519c799e65cc98b32c switched state changed callbacks to use `HookableEvent`, which is specifically designed to handle the case where a hook outlives its associated event. Since the workaround is no longer necessary replace it with a standard `EventHook`.
2026-03-07Core: Optimize RemoveHostPageTableMappingsJosJuice
This switches from an O(log(N) * M) algorithm to an O(N * log(M)) algorithm. This is advantageous because N, the size of `mappings`, is usually much smaller than M, the size of `m_page_table_mapped_entries`. RemoveLargePageTableMapping already did something similar, so we can even deduplicate some code between it and RemoveHostPageTableMappings. Speeds up Rogue Squadron 3 by roughly 3% on my PC.
2026-03-04DolphinQt: Save when closing settings windowJosJuice
If Dolphin crashes, changes that have been made to settings are often lost. This has been a minor annoyance for me when developing, but it has become a much bigger issue recently due to the problem where Dolphin freezes on shutdown for ROG Ally users. Instead of saving the config when certain arbitrary settings are changed, let's save the config when the user closes the settings window.
2026-03-03Merge pull request #14435 from Simonx22/fix/metal-early-stop-shutdownJMC47
Metal: Always run endEncoding on command encoders
2026-03-03DolphinQt: Improve Gecko code download failure messageSimonx22
2026-03-03Metal: Always run endEncoding on command encodersSimonx22
Fixes a macOS Metal crash when stopping immediately after boot starts. m_upload_encoder and m_texture_upload_encoder could be dealloc'd during shutdown before endEncoding could be called, which causes a Metal assertion failure. Co-authored-by: OatmealDome <julian@oatmealdome.me>
2026-03-02VertexLoaderManager: Fix crash caused by invalid array baseDentomologist
Don't set cached array bases to invalid pointers. If a game tries to set an invalid base just keep the old one, which might cause game problems but won't crash the emulator.
2026-03-02Merge pull request #14327 from ↵Dentomologist
Dentomologist/performancemetrics_fix_graph_size_and_spacing PerformanceMetrics: Fix graph size and spacing
2026-03-01DSU: Don't crash on bad hostnameTellowKrinkle
2026-02-28Merge pull request #14425 from JosJuice/android-wiimote-crashJMC47
Android: Fix Wii Remote connection crashes
2026-02-28Android: Convert AfterDirectoryInitializationRunner to KotlinSimonx22