Commit Graph

33561 Commits

Author SHA1 Message Date
JMC47
e20f52ce7c
Merge pull request #14536 from JosJuice/gbacore-android-content
Don't call OpenModeToAndroid in GBACore
2026-04-01 11:39:47 -04:00
Jordan Woyak
6d38ccb9a6 HW/GBACore: Fix integrated game boy clock speeds and enable colors. 2026-04-01 01:48:16 -05:00
JosJuice
99531cf509 Don't call OpenModeToAndroid in GBACore
`OpenModeToAndroid("r")` is conceptually wrong, since we're opening a
binary file. It should be either `OpenModeToAndroid("rb")` or just
`"r"`. But either way it evaluates to `"r"`, so this doesn't affect
behavior.
2026-04-01 08:19:53 +02:00
JosJuice
c542279595 Android: Add SAF support for GBA ROM and BIOS files
SAF for save files is a huge can of worms because they're managed in a
more complicated way than asking the user to select an existing file,
so I won't be touching save files for now.
2026-03-31 23:40:54 -05:00
Jordan Woyak
5cacbcf6ea DolphinQt: Expose Game Boy Player ROM path on the GameCube config tab. 2026-03-31 23:40:54 -05:00
Jordan Woyak
657a6f0cff State: Increase STATE_VERSION for Game Boy Player. 2026-03-31 23:40:54 -05:00
Dentomologist
68ac3d651d AutoUpdate: Only set triggered flag if process creation succeeds
Don't set `s_update_triggered` if the updater process fails to be
created. This will allow users in that situation to try to start an
update later without having to restart Dolphin first.
2026-03-31 12:44:47 -07:00
Dentomologist
f86bbc3b1d AutoUpdate: Don't start redundant update checks
Ignore any new update check requests if one is already in progress.
2026-03-31 12:44:47 -07:00
Vicki Pfau
3ece5f7d7b HW/HSP: Add Game Boy Player device.
Co-authored-by: Jordan Woyak <jordan.woyak@gmail.com>
2026-03-30 22:29:11 -05:00
Jordan Woyak
461741e0ea ChunkFile: Add void* version of DoPointer. 2026-03-30 19:02:11 -05:00
Jordan Woyak
2f4badc357 HW/GBACore: Add some special handling for GBPlayer.
Set a fixed GBA-sized video buffer.
Don't connect audio output to Mixer.
Don't configure an SIODriver.
2026-03-30 19:02:11 -05:00
Jordan Woyak
19157cacd5 MainSettings: Add a fifth GBA ROM config path for GBPlayer. 2026-03-30 19:02:11 -05:00
JMC47
a95b18211b
Merge pull request #14519 from cristian64/registers_widget_font_fixes
DolphinQt: Size adjustments in **Registers** widget based on selected debug font.
2026-03-30 17:18:21 -04:00
Dentomologist
6008526b14
Merge pull request #14530 from JosJuice/create-logs-folder
UICommon: Create User/Logs/ at startup
2026-03-30 11:58:20 -07:00
JosJuice
134f709f59 UICommon: Create User/Logs/ at startup
We used to create User/Logs/ as a side effect of creating
User/Logs/Mail/, but the creation of User/Logs/Mail/ was removed in
8cbfee2, so now nothing is creating User/Logs/ anymore. Let's explicitly
create it.
2026-03-30 20:04:58 +02:00
JMC47
e0fda9bb54
Merge pull request #14528 from jordan-woyak/gba-mixer-fix
AudioCommon/Mixer: Fix integrated GBA sample rate calculation and inverted stereo channels.
2026-03-30 12:34:16 -04:00
JMC47
c93c9dd407
Merge pull request #14526 from jordan-woyak/gbacore-stuff
HW/GBACore: Improvements.
2026-03-30 12:30:37 -04:00
Jordan Woyak
e7e6c0990d AudioCommon/Mixer: Fix integrated GBA sample rate calculation and inverted stereo channels.
Give MixerFifo a variable sample rate dividend.
Handle byte-swapping and stereo channel construction outside of MixerFifo to better handle the custom layouts of each stream.
2026-03-30 08:37:37 -05:00
Sepalani
be0fdd85b9 AMMediaboard: Fix sequence-point warning 2026-03-30 11:10:13 +04:00
Jordan Woyak
84dd2304d6 HW/GBACore: Allow save states to work when the GBA core is stopped. 2026-03-29 11:23:09 -05:00
Jordan Woyak
de0999a19c HW/GBACore: Make the Flush function public and add additional getters. 2026-03-29 11:20:43 -05:00
Jordan Woyak
f103155658 HW/GBACore: Expose the ability to run for a single frame. 2026-03-29 11:15:03 -05:00
Jordan Woyak
1ab57199e6 HW/GBACore: Allow running without the GBA bios. 2026-03-29 11:15:03 -05:00
Jordan Woyak
c197f18a46 HW/GBACore: Enable GB/GBC ROM loading. 2026-03-29 11:15:03 -05:00
JMC47
67f1afeb74
Merge pull request #14517 from jordan-woyak/event-functor
CoreTiming: Change TimedCallback to a Common::MoveOnlyFunction.
2026-03-28 16:19:28 -04:00
Tillmann Karras
51e488e84a VideoCommon: ignore zero-stride EFB/XFB copies
just clear if requested
2026-03-28 03:05:08 +00:00
JMC47
932769c4e2
Merge pull request #14110 from jordan-woyak/mgba-joybus-threading
HW/GBACore: Adjust joybus interthread communication to use WorkQueueThreadSP.
2026-03-27 20:42:06 -04:00
JMC47
04fd45a960
Merge pull request #14522 from jordan-woyak/hsp-log-desc
LogManager: Remove redundant "(HSP)" in High-Speed Port's log type descritpion.
2026-03-27 13:06:17 -04:00
Jordan Woyak
1b9a01f168 LogManager: Remove redundant "(HSP)" in High-Speed Port's log type descritpion. 2026-03-27 11:24:14 -05:00
cristian64
a051acec91 DolphinQt: Size adjustments in **Registers** widget based on selected debug font.
- Row height is no longer hardcoded to `24`; instead, the height is
  determined by the font height of the currently selected debug font.
- Header height has been reduced (a factor of the font height) as it
  only serves as a column resizer.
- A `OnDebugFontChanged()` slot has been connected to properly update
  the widget on debug font changes.

| Before | After |
| --- | --- |
| <img alt="Registers widget (before)" title="Registers widget (before)" src="https://github.com/user-attachments/assets/8a6644f9-1081-4ac8-9fff-c79ddb73e103" /> | <img alt="Registers widget (after)" title="Registers widget (after)" src="https://github.com/user-attachments/assets/67f799d0-8afd-4081-bb40-3d7a76ddc705" /> |
2026-03-27 09:30:31 +00:00
iwubcode
6b7a9e6ac3 VideoCommon: allow graphics mods to be added to sub folders 2026-03-26 20:13:16 -05:00
iwubcode
9cde551e29 VideoCommon: watch the user and system graphics mods directories for modified assets 2026-03-26 20:13:16 -05:00
iwubcode
1f72403ec7 VideoCommon: optionally apply materials to EFBs
After an EFB operation is turned into a texture, if there is a graphics mod action that provides a custom material, update the EFB texture with the material
2026-03-26 20:13:16 -05:00
iwubcode
7bfd43eb1a VideoCommon: update CustomPipelineAction to get a Material when an EFB is received 2026-03-26 20:13:16 -05:00
iwubcode
2d8f955851 VideoCommon: enhance 'CustomResourceManager' for post processing
This expands the interface of 'CustomResourceManager' to get a Material for post processing a frame buffer (currently EFB).  The flow is similar to the normal draw material but distinguishes itself by not needing a UID.  The full shader is much simpler than the draw shader and is currently put inline with the shader resource.
2026-03-26 20:13:16 -05:00
Jordan Woyak
c658e7678b HW/SI: Replace DeviceEventCallback with a lambda. 2026-03-26 19:37:33 -05:00
Jordan Woyak
670a5df7ce CoreTiming: Change TimedCallback to a Common::MoveOnlyFunction. 2026-03-26 19:29:25 -05:00
iwubcode
6ba2d2e081 VideoCommon: update graphics mod action interface
* Add a 'AfterEFB' function to graphics mod action that can return a Material
* Rename previous EFB graphics mod function to 'BeforeEFB' to differentiate from 'AfterEFB'
* Rename previous XFB graphics mod function to 'BeforeXFB' to mirror EFB
2026-03-26 18:52:01 -05:00
Jordan Woyak
efa0140791 State: Increase STATE_VERSION. 2026-03-26 16:04:21 -05:00
Jordan Woyak
d76757bba6 HW/GBACore: Adjust joybus interthread communication to use WorkQueueThreadSP. 2026-03-26 16:03:59 -05:00
Jordan Woyak
1ee8c5a8f1 Common/WorkQueueThread: Make IsRunning function public. 2026-03-26 16:03:59 -05:00
Dentomologist
d16004c371
Merge pull request #14446 from Dentomologist/gamelist_add_game_count
GameList: Add status bar with game count
2026-03-26 14:00:52 -07:00
JMC47
d95445727b
Merge pull request #14501 from jordan-woyak/triforce-jvs-io
Triforce: Rewrite JVS IO board emulation.
2026-03-26 14:53:24 -04:00
Jordan Woyak
a3f4674bb7
Merge pull request #14511 from Ma-Rang/pr/nogui-escape-win32
NoGUI: Add Escape key to request emulation shutdown on Windows
2026-03-26 07:06:36 -05:00
Jordan Woyak
02911dbc42 State: Increase STATE_VERSION. 2026-03-26 07:02:19 -05:00
Jordan Woyak
5ec42165b7 Triforce: Rewrite JVS IO board emulation.
Moved JVS IO emulation from SI_DeviceAMBaseboard into new JVSIOBoard class.
Sega/Namco board-specific functionality is handled by derived JVSIOBoard classes.
Game input is now sourced from IOPorts rather than being hard coded into JVS IO handlers.
SI_DeviceAMBaseboard: Use IOPorts for status switch input.
2026-03-26 07:02:19 -05:00
Jordan Woyak
5c912e881e IOPorts: Add additional functionality to handle analog input, coin input, et al.
Created IOAdapter classes for FZeroAX games.
Created SerialDevice classes for MarioKartGP and FZeroAX FFB steering wheels.
Added game-specific input handling to the various IOAdapter classes.
2026-03-26 06:38:31 -05:00
Jordan Woyak
49518164bb Triforce/Touchscreen: Fix LOG type. 2026-03-26 06:38:31 -05:00
JMC47
3c8a72eb18
Merge pull request #14470 from cristian64/triforce_volume_region_fix
Triforce: Check only first byte in region flag.
2026-03-25 17:47:20 -04:00
JMC47
88b7ad74d9
Merge pull request #14462 from jordan-woyak/mediaboard-span
AMMediaboard: Add GetSpanForMediaboardAddress function to eliminate hardcoded network buffer base addresses.
2026-03-25 13:45:47 -04:00
JMC47
dcbcfed12a
Merge pull request #14499 from JosJuice/gpu-desync-no-report
Remove "please report it to the developers" from unknown opcode message
2026-03-25 13:31:55 -04:00
Ma-Rang
7ef7b6e3e9 NoGUI: Add Escape key to close emulation on Windows
PlatformX11 already handles XK_Escape to trigger RequestShutdown().
Add the equivalent WM_KEYDOWN / VK_ESCAPE handler to PlatformWin32
for parity.
2026-03-25 08:56:29 -05:00
Dentomologist
81192d96cf
Merge pull request #14498 from JosJuice/invalid-access-wording
Reword the invalid read/write panic alert
2026-03-24 20:07:47 -07:00
JosJuice
ff4a7c8a95 Reword the invalid read/write panic alert
Some users seem to be under the impression that the panic alert is
saying that enabling MMU will fix the issue, but that's not what it
actually says. Let's try to make this a bit clearer.
2026-03-24 22:25:01 +01:00
Dentomologist
f5dfb7e3d3 AudioCommon: Use left const for non-pointer variables 2026-03-23 16:30:30 -07:00
Sintendo
f6a67aa6e7 Use more std::span arguments 2026-03-23 23:55:09 +01:00
Jordan Woyak
c05b231015
Merge pull request #14496 from Dentomologist/audiopane_fix_wasapi_default_device_combo_selection
AudioPane: Fix WASAPI default device combo selection
2026-03-23 15:27:29 -05:00
Jordan Woyak
cddffd2e2a
Merge pull request #14497 from JosJuice/linux-gba-select
Fix default GBA Select binding on Linux
2026-03-22 16:11:25 -05:00
JosJuice
f2055fe0b8 Remove "please report it to the developers" from unknown opcode message
I think we've gotten all the useful reports we can get from this now.
Nowadays we're just getting repeated reports of issues we already know
about, like https://bugs.dolphin-emu.org/issues/12321.
2026-03-22 14:23:46 +01:00
JosJuice
5af4fedd92 Fix default GBA Select binding on Linux 2026-03-22 13:51:01 +01:00
JMC47
85e63dc32f
Merge pull request #14482 from jordan-woyak/triforce-ic-card
Triforce: ICCardReader and DeckReader improvements.
2026-03-21 23:57:05 -04:00
Dentomologist
6b2a8eff15 AudioPane: Fix WASAPI default device combo selection
Set the default value of `Config::MAIN_WASAPI_DEVICE` to `default`
instead of `Default`. This fixes an issue where `AudioPane`'s `Output
Device` combo would be blank if `WASAPI` was selected and the user had
never changed the value of `Output Device`.

We don't have to worry about backward compatibility with users who have
`Default` in their config because config values aren't written unless
they've been changed at some point from the default, and the combo has
always saved `default` instead of `Default`.

Audio still worked during emulation in this situation because the
fallback for an unrecognized device name is the default device.

To help prevent similar situations in the future references to
`MAIN_WASAPI_DEVICE`'s default value now call `GetDefaultValue` instead
of hardcoding the expected default, or use the new helper function
`Config::IsDefaultValue`.
2026-03-21 15:07:42 -07:00
OatmealDome
26e58ea349
VulkanContext: Drop support for BUG_BROKEN_DISCARD_WITH_EARLY_Z workaround 2026-03-21 11:16:15 -04:00
OatmealDome
5a94e63e42
UberShaderPixel: Fix missing check for framebuffer fetch for BUG_BROKEN_DISCARD_WITH_EARLY_Z workaround 2026-03-21 11:16:15 -04:00
OatmealDome
98ca653774
DriverDetails: Mark BUG_BROKEN_DISCARD_WITH_EARLY_Z as fixed in macOS 14.0+ 2026-03-21 11:16:15 -04:00
OatmealDome
750c6ed705
DriverDetails: Use macOS version as the driver version 2026-03-21 11:16:14 -04:00
OatmealDome
36d8dbc590
CommonFuncsObjC: Make function to fetch the current macOS version common 2026-03-21 11:16:14 -04:00
TellowKrinkle
56845b2b93 VideoCommon: Fix no mips hack 2026-03-21 00:35:06 -05:00
Lilly Jade Katrin
529b696fcb Remove AchievementManager ChangeDisc call from Eject
This was causing the achievement runtime to shutdown in the middle
of a disc change even if the resulting disc was valid, which was
causing achievements like the ones in Resident Evil for completing
the entire game in a single session to break midway through.

Also adds a log to notify the user when the disc change is invalid
(e.g. different game inserted).
2026-03-20 21:42:05 -04:00
Jordan Woyak
680ee9b65f State: Increase STATE_VERSION. 2026-03-19 21:35:31 -05:00
Jordan Woyak
85400539ba Triforce: ICCardReader and DeckReader improvements.
Significantly rewrote ICCardReader and DeckReader functionality.
Dual IC card slots of VirtuaStriker4 + Gekitou now work.
IC cards are automatically inserted/ejected in VirtuaStriker4 + Gekitou + Avalon.
IC card data is saved to a file.
Avalon deck contents are loaded from a JSON file.
Added IOPorts class to handle bespoke GPIO functionality.
2026-03-19 21:35:31 -05:00
Jordan Woyak
b5bc70a6cc Triforce/SerialDevice: Add PassThroughTxBytes function and some minor cleanups. 2026-03-18 22:39:12 -05:00
Jordan Woyak
816e3a654a MagneticCardReader: Simplify checksum logic. 2026-03-18 22:39:12 -05:00
Jordan Woyak
7fbe96d42e SI_DeviceAMBaseboard: Remove "card system" from JVS-IO board features. It doesn't seem to be accurate (or related to the Magnetic/IC cards) and it causes warnings in the JVSIOCommand::CoinInput handler. 2026-03-18 22:39:12 -05:00
Jordan Woyak
f074cdb08b
Merge pull request #14237 from JulienBernard3383279/gcc-adapter-hotswap
GC adapter fixes (hotplugging, claim retries, Dolphin shutdown)
2026-03-18 16:56:30 -05:00
Jordan Woyak
c9c4b79a7e AMMediaboard: Prevent MediaBoardRange end from exceeding the underlying buffer size. 2026-03-18 04:54:05 -05:00
Jordan Woyak
2640f194f7 AMMediaboard: Add a GetSpanForMediaboardAddress function to eliminate the hardcoded network buffer base addresses. 2026-03-18 04:54:05 -05:00
Jordan Woyak
de44626d23
Merge pull request #14400 from sepalani/tri-fd-gen
AMMediaboard: Change the way socket descriptors are assigned
2026-03-18 00:34:51 -05:00
OatmealDome
a8c5f6ddfc
Merge pull request #14481 from JosJuice/retroachievements-change-disc
RetroAchievements: Block loading discs that don't match current title
2026-03-17 17:57:09 -04:00
JMC47
f6bcb31435
Merge pull request #14480 from JosJuice/page-table-fastmem-setting
Disable page table fastmem for TimeSplitters: Future Perfect
2026-03-17 15:56:40 -04:00
JosJuice
6fdd45ddf6 RetroAchievements: Block loading discs that don't match current title 2026-03-17 19:58:28 +01:00
JosJuice
3564a256bf
Merge pull request #14478 from JosJuice/wii-menu-headache
Move achievements code out of DVDInterface::SetDisc
2026-03-17 19:07:41 +01:00
Dentomologist
1ab9a867f6
Merge pull request #14396 from cscd98/fmt-fix
fmt: replace <fmt/base.h> with <fmt/format.h> as not available until fmt>=11
2026-03-17 10:34:00 -07:00
JosJuice
989a95a177 Core: Add INI-only setting for page table fastmem 2026-03-17 18:27:05 +01:00
JosJuice
e123962bca Move achievements code out of DVDInterface::SetDisc
This should stop AchievementManager::LoadGame from being called for the
default ISO when CBoot::BootUp is booting something other than a disc or
IPL (most notably, the Wii Menu), while still detecting all disc changes
that happen while a disc game is running.
2026-03-17 09:07:34 +01:00
JosJuice
8ac767e032
Merge pull request #14474 from Dentomologist/fifoplayer_fix_screenshot_hang_during_playback
FifoPlayer: Fix hang when taking screenshot during FIFO log playback
2026-03-16 18:47:25 +01:00
Dentomologist
3e7ba69205 FifoPlayer: Fix hang when taking screenshot during FIFO log playback
Don't copy null terminators from the log's `header.gameid` into
`FifoDataFile`'s `m_game_id`.

Doing so would cause an infinite loop in `Core::GenerateScreenshotName`
as the various concatenations and `fmt::format` calls would then
effectively drop all the timestamps and disambiguating arbitrary numbers
since they followed the null terminator in the gameid, and so the
`File::Exists` calls would always return true.

Fixes https://bugs.dolphin-emu.org/issues/14002.
2026-03-16 00:49:38 -07:00
OatmealDome
4dc5ead172
Merge pull request #14469 from OatmealDome/backend-warning
GeneralWidget: Add protections against invalid values in BackendWarning()
2026-03-15 20:13:41 -04:00
OatmealDome
d60942d3cb
Merge pull request #14461 from Dentomologist/wasapistream_handle_getbuffer_errors
WASAPIStream: Fix crash when GetBuffer call fails
2026-03-15 20:09:28 -04:00
cristian64
3eea3a90b5 Triforce: Check only first byte in region flag.
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-15 18:43:00 +00:00
OatmealDome
aba842c09a
GeneralWidget: Add protections against invalid values in BackendWarning() 2026-03-15 14:08:41 -04:00
Craig Carnell
4caddbc12b fmt: change use of fmt/base.h to fmt/format.h as not provided until fmt>=11.0 2026-03-15 08:37:00 +00:00
Dentomologist
2aba231915 System: Use forward declarations in System.h 2026-03-14 10:53:45 -07:00
Mihai Brodschi
f9c3f06f0a Move PerformanceMetrics from global variable to System
This avoids the static initialization order fiasco between Core and VideoCommon

Co-authored-by: Jordan Woyak <jordan.woyak@gmail.com>
2026-03-14 16:42:21 +02:00
Sepalani
5bddb6e244 AMMediaboard: Increase NetworkCommandAddress2 range 2026-03-14 12:45:28 +04:00
Sepalani
9cb2229601 AMMediaboard: Change the way socket descriptors are assigned 2026-03-14 12:45:28 +04:00
Dentomologist
e8a78ed95f WASAPIStream: Fix crash when GetBuffer call fails
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-13 20:29:58 -07:00
Dentomologist
7a45ede688
Merge pull request #14123 from JosJuice/fix-logical-page-mappings
Memmap: Fix populating m_logical_page_mappings
2026-03-13 12:11:01 -07:00
Dentomologist
7209cf87cb GameList: Add status bar with game count
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-13 11:26:32 -07:00
Jordan Woyak
51a15f42a9 HW/Triforce/SerialDevice: Add missing include to fix FreeBSD build. 2026-03-12 21:35:30 -05:00
JMC47
d4e97f6bd7
Merge pull request #14409 from sepalani/tri-rw-log
AMMediaboard: Improve recv/send log messages
2026-03-12 21:51:29 -04:00
JMC47
2336753a24
Merge pull request #14408 from sepalani/tri-eagain
AMMediaboard: Check for EAGAIN in WSAGetLastError
2026-03-12 21:51:10 -04:00
JMC47
f0096310bf
Merge pull request #14452 from jordan-woyak/triforce-avalon-touchscreen
Triforce: Implement The Key of Avalon's touchscreen.
2026-03-12 21:49:08 -04:00
Jordan Woyak
12d790a54a
Merge pull request #14442 from Dentomologist/performancemetrics_use_state_changed_hookableevent
PerformanceMetrics: Use HookableEvent for state changed callback
2026-03-12 19:54:13 -05:00
JMC47
9143c4cc95
Merge pull request #14172 from sepalani/usb-iso-ret
IOS/USB: Add helper to set return values of IsoMessage's packets
2026-03-12 16:33:07 -04:00
Dentomologist
e550e1ff7c
Merge pull request #14345 from TryTwo/cheat_search_work
CheatSearch: Add ability to breakpoint the selected lines.
2026-03-12 12:35:51 -07:00
Dentomologist
e26b61dcee
Merge pull request #14440 from JosJuice/optimize-remove-page
Core: Optimize RemoveHostPageTableMappings
2026-03-12 12:31:53 -07:00
JMC47
161f9e82c1
Merge pull request #14427 from Simonx22/qt/cheats-gecko-download-error-message
DolphinQt: Improve Gecko code download failure message
2026-03-12 15:25:41 -04:00
Jordan Woyak
cca880de16 State: Increase STATE_VERSION. 2026-03-12 03:58:01 -05:00
Jordan Woyak
3e8430440a Triforce: Implement The Key of Avalon's touchscreen.
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-12 03:57:47 -05:00
Jordan Woyak
b77cf5e0f2 State: Increase STATE_VERSION. 2026-03-12 02:48:31 -05:00
Jordan Woyak
b1000496a2 SI_DeviceAMBaseboard: Clean up RunBuffer.
Eliminated outer loop.
Reduced memcpy'ing.
2026-03-12 02:48:07 -05:00
Jordan Woyak
4fa93e402d SI/SI_DeviceAMBaseboard: Expose the buffer size of 128 to eliminate some magic numbers. 2026-03-12 02:48:07 -05:00
Jordan Woyak
1234a4e479 SI_DeviceAMBaseboard: Use CreateStatusResponse to fix "RunSIBuffer: expected_response_length" WARN_LOGs. 2026-03-12 02:48:07 -05:00
Jordan Woyak
8da0a94ab9 SI_DeviceAMBaseboard: Add baseboard 0x70 command to SerialInterface::EBufferCommands enum to eliminate BaseBoardCommand enum. 2026-03-12 02:48:07 -05:00
Jordan Woyak
cda384d40f SI_DeviceAMBaseboard: Remove unnecessary code. 2026-03-12 02:48:07 -05:00
Jordan Woyak
fe2d604060
Merge pull request #14401 from naari3/master
AMMediaboard: stub Triforce NETWORK TEST command handling
2026-03-12 02:47:37 -05:00
Stavros Kosmas
d09436cd1a DolphinQt: Improve TAS UI Widgets
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-12 04:59:49 +02:00
Dentomologist
252ec7452c PerformanceMetrics: Use HookableEvent for state changed callback
Use the normal state changed `HookableEvent` instead of having
`Core::NotifyStateChanged` call `g_perf_metrics.OnEmulationStateChanged`
directly.

The direct call was added in bad78cfed4 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 a97627e736 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-07 12:50:59 -08:00
JosJuice
a3b37c041a Core: Optimize RemoveHostPageTableMappings
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-07 12:56:36 +01:00
JosJuice
d25ef67d6f DolphinQt: Save when closing settings window
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-04 22:26:25 +01:00
JMC47
43def54de2
Merge pull request #14435 from Simonx22/fix/metal-early-stop-shutdown
Metal: Always run endEncoding on command encoders
2026-03-03 12:25:16 -05:00
Simonx22
d2e381090c DolphinQt: Improve Gecko code download failure message 2026-03-03 11:09:39 -05:00
Simonx22
03bcd564c5 Metal: Always run endEncoding on command encoders
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-03 09:49:42 -05:00
Dentomologist
edb576f4c0 VertexLoaderManager: Fix crash caused by invalid array base
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-02 13:02:51 -08:00
Dentomologist
15f24c56e4
Merge pull request #14327 from Dentomologist/performancemetrics_fix_graph_size_and_spacing
PerformanceMetrics: Fix graph size and spacing
2026-03-02 11:01:37 -08:00
TellowKrinkle
80762e0575 DSU: Don't crash on bad hostname 2026-03-01 00:08:08 -06:00
JMC47
63fc9d7ca3
Merge pull request #14425 from JosJuice/android-wiimote-crash
Android: Fix Wii Remote connection crashes
2026-02-28 16:16:20 -05:00
JosJuice
5a914e5247 Android: Use DeleteLocalRef more in WiimoteAndroid
Doesn't matter a lot, but we're supposed to do this to be nice citizens.
2026-02-28 16:13:36 +01:00
JosJuice
faa861f1ab Android: Fix Wii Remote connection crashes
Users are reporting a crash at the point where WiimoteAndroid::IORead
tries to use m_java_wiimote_payload. This commit solves the problem by
making m_java_wiimote_payload a global reference.

The code for setting up m_java_wiimote_payload has also been moved to
the constructor just because that way it's impossible for it to run
twice. (If the code as written were to run a second time, the old global
reference would be leaked. ConnectInternal should only run once, so this
is just to be on the safe side.)

Fixes https://bugs.dolphin-emu.org/issues/13960.
2026-02-28 16:10:58 +01:00
JosJuice
1a08708a75
Merge pull request #14418 from LillyJadeKatrin/retroachievements-wii-menu
RetroAchievements - Close game on switch to null hash
2026-02-28 15:15:50 +01:00
Dentomologist
f898d75bf3
Merge pull request #14317 from JosJuice/jit-cache-macro-loop
Jit: Use RangeSet for physical_addresses
2026-02-26 19:25:29 -08:00
Julien Bernard
0e8db4fa22 Send neutral stick positions when disconnected rather than down-left 2026-02-25 23:06:50 +01:00
Julien Bernard
afc2920a5f Gcc adapter fixes (hotplugging, claim retries, shutdown, bad yields) 2026-02-25 22:55:48 +01:00
naari3
65f8c8f6cc AMMediaboard: derive TestHardware phase2 delay from tick rate
Use the existing system reference instead of Core::System::GetInstance(),
and calculate the phase 2 scheduling delay from GetTicksPerSecond()
instead of hardcoding 50000 ticks.
2026-02-26 00:49:24 +09:00
Lilly Jade Katrin
713d557d5e RetroAchievements - Close game on switch to null hash
Mistakenly thought the change media call would close the current
game if the new media failed to hash. This wasn't the case so
instead I'll close the current game myself. This fixes an issue
where a default ISO would immediately load achievements when
starting up the Wii menu.
2026-02-24 22:55:30 -05:00
JosJuice
7b372db559 DiscIO: Only allow alphanumeric ASCII in game IDs
We often use game IDs in paths, so we should try to make sure path
traversal is impossible in game IDs. Admittedly, doing any kind of real
attack using the six bytes available in game IDs is unrealistic, but no
game ID should contain non-alphanumeric or non-ASCII characters anyway.

Might also fix https://bugs.dolphin-emu.org/issues/13982 by skipping
converting between encodings for game IDs.
2026-02-24 21:36:02 +01:00
JosJuice
1d74321212 DiscIO: Move DecodeString to Volume.cpp
This had to be in the header back when it was templated, but 083faa8b
made it not templated.
2026-02-24 21:09:12 +01:00
JMC47
ff27147a71
Merge pull request #14407 from jordan-woyak/mag-card-fixup
MagneticCardReader: Minor fixup to writing card data.
2026-02-23 19:09:23 -05:00
JosJuice
c1a26808ce Jit: Use RangeSet for physical_addresses
This makes JitBaseBlockCache::ErasePhysicalRange around 50% faster and
PPCAnalyzer::Analyze around 40% faster. Rogue Squadron 2's notoriously
laggy action of switching to and from cockpit view is made something
like 20-30% faster by this, though this is a very rough measurement.
2026-02-23 23:01:49 +01:00
JosJuice
36f45dce44 Move RangeSet from Externals to Common
This is a very small libary, and as I understand it, it was more or less
developed for Dolphin.

This moves the two relevant files from Externals to Common, changes the
namespace to Common, reformats the code, and adds Dolphin copyright
notices. The change in copyright notice and license was approved by
AdmiralCurtiss.
2026-02-23 22:55:38 +01:00
Martino Fontana
a108fb849f AchievementManager: APPROVED_LIST_HASH quality of life improvements
APPROVED_LIST_HASH is moved to a separate file, making tests compilation faster after changing it.
The error message prints the hash in a way that it can be directly copy-pasted (though it still needs clang-format).
2026-02-22 00:22:46 +01:00
Admiral H. Curtiss
0d359e23da
Merge pull request #14212 from cscd98/cast-func
mingw: use reinterpret_cast for function→void* conversion to satisfy C++ standard
2026-02-21 18:27:50 +01:00
Admiral H. Curtiss
fee2b0ee03
Merge pull request #14209 from cscd98/static-cast-fix
mingw: replace static_cast with reinterpret_cast as not permitted between void* and function params
2026-02-21 18:27:22 +01:00
Sepalani
0950999d08 AMMediaboard: Check for EAGAIN in WSAGetLastError 2026-02-21 13:41:39 +04:00
Sepalani
543d5f89e6 AMMediaboard: Improve recv/send log messages 2026-02-21 12:27:04 +04:00
Jordan Woyak
97a88dd7db MagneticCardReader: Minor fixup to writing card data.
Ensure the 3rd track is written even if the 2nd track isn't.
Moved GetHexDump helper function to StringUtil.
2026-02-21 01:01:57 -06:00
naari3
ab0d300041 AMMediaboard: extract TestHardware "TEST OK" magic numbers to named constants
Replace raw hex literals with TEST_OK_WORD0/TEST_OK_WORD1 constexpr
constants and consolidate the endianness explanation at the definition
site.
2026-02-21 14:40:22 +09:00
naari3
adbecd00ec AMMediaboard: fix TestHardware string endianness in legacy Execute path
The legacy Execute1 path (offset=0, length=0) was using Write_U32
(big-endian) to write the "TEST OK" status string. However, the PPC
display code in segaboot reads this buffer with lwz followed by manual
bswap32, so the data must be stored in little-endian. Use Write_U32_Swap
to match the other two TestHardware paths.
2026-02-21 14:38:38 +09:00
naari3
a297bb8068 State: bump version to 178 for Triforce NETWORK TEST command handling 2026-02-21 13:29:09 +09:00