Commit Graph

33358 Commits

Author SHA1 Message Date
Jordan Woyak
2eeff845bd
Merge pull request #14387 from Dentomologist/cheatsmanager_update_tabs_on_creation
CheatsManager: Update code tabs on creation
2026-02-20 19:31:40 -06:00
Jordan Woyak
2b590b12e6
Merge pull request #14402 from sepalani/tri-osd-bind
AMMediaboard: Replace bind PanicAlert with OSD message
2026-02-20 19:28:07 -06:00
Jordan Woyak
ddedae327f
Merge pull request #14395 from sepalani/tri-connect
AMMediaboard: Add more connect log messages
2026-02-20 19:25:59 -06:00
Jordan Woyak
b5a1a06f6c
Merge pull request #14394 from sepalani/tri-log
AMMediaboard: Add more log messages
2026-02-20 19:24:24 -06:00
cristian64
643fcaec03 DolphinQt: Restore log font current index accurately.
The logic in the code was deliberately avoiding index `2` (**Selected
Font**; the debug font) by using `std::min(index, 1)`. Presumably, the
reason was that there was no debugger in Qt version of Dolphin at the
time.

Test plan:

- Select a debug font via the **Options > Font...** action.
- Show the **Log** tab via the **View > Log** action.
- In the **Log** tab, choose the **Selected Font** item in the combobox.
- Restart Dolphin.

**Without** the patch, the **Monospaced Font** item is wrongly selected
in the combobox.

**With** the patch, the **Selected Font** item is now properly restored
from the saved settings, and the selected debug font is correctly used
in the log messages.
2026-02-20 22:14:35 +00:00
JMC47
981b7df420
Merge pull request #14335 from TixoRebel/joycon-config
Core: Add SDL Hints settings
2026-02-20 02:44:52 -05:00
Andrew Strauss
61c36b0cc8 Add new window to configure SDL hints and store them in the main ini file
Signed-off-by: Andrew Strauss <astrauss11@gmail.com>
2026-02-20 02:05:35 -05:00
Dentomologist
3d16e0c5be
Merge pull request #14343 from TryTwo/toggle_breaking
BreakpointsWidget: Add option to toggle all breaking
2026-02-19 21:55:38 -08:00
TryTwo
f9c7731f4d Debugger/ BreakpointsWidget: Add option to disable/enable all breaking without affecting individual breakpoint enabled states.
Allows you to quickly stop breaking, play the game, then re-enable breaking. useful if you have many active breakpoints, but need to run the game.
2026-02-19 16:23:42 -07:00
Sepalani
989586433a AMMediaboard: Replace bind PanicAlert with OSD message 2026-02-20 02:43:51 +04:00
Dentomologist
02db73c8dc
Merge pull request #14344 from TryTwo/cheatsearch_work2
Cheat Search: Add ability to delete items and fix duplicate commands
2026-02-19 14:36:54 -08:00
Sepalani
81b414c9c9 AMMediaboard: Add more connect log messages 2026-02-19 13:30:17 +04:00
Sepalani
b92cef5001 AMMediaboard: Add more log messages 2026-02-18 19:00:06 +04:00
Jordan Woyak
9674b1fa8f MagneticCardReader: Automatically insert a blank card when Command_A0_Clean is received. 2026-02-16 18:59:57 -06:00
Craig Carnell
bd728d1c20 mingw: replace static_cast with reinterpret_cast as not permitted between void* and function params 2026-02-16 13:28:11 +00:00
Jordan Woyak
bc0c3d9f6a HW/GCPad: Make Android default to shaking the device for Triforce coin input. 2026-02-16 00:46:50 -06:00
Jordan Woyak
c28ec7a6d3 Triforce: Rename IPOverrides to IPRedirections. 2026-02-15 23:13:18 -06:00
Jordan Woyak
cbd43914a5 Network: Improve IPv4PortRange::ToString to support CIDR notation and only last octet difference. 2026-02-15 23:13:18 -06:00
Jordan Woyak
0ff8fb71a3 Triforce: Minor cleanups. 2026-02-15 20:14:15 -06:00
Jordan Woyak
282e14cce6 AMMediaboard: Move things from global namespace to AMMediaboard namespace. 2026-02-15 20:14:15 -06:00
Jordan Woyak
f00b1c590e DolphinQt: Add Triforce tab to main settings window. 2026-02-15 20:14:15 -06:00
Jordan Woyak
0fc8f463f2 DolphinQt/Debugger/NetworkWidget: Minor cleanups. 2026-02-15 20:14:15 -06:00
Sepalani
2d9b3c4118 Debugger/NetworkWidget: Add Triforce support 2026-02-15 20:14:15 -06:00
Jordan Woyak
f657b32521 HW: Rewrite MagCard features of SI_DeviceAMBaseboard in new MagneticCardReader class.
A huge thank you goes to GXTX and https://github.com/GXTX/YACardEmu which this code is based on.
2026-02-15 20:14:15 -06:00
Jordan Woyak
d893565b78 AMMediaboard: IP override improvements and other cleanups.
Overrides now also apply in reverse for accepted connections.
IP Override UI now includes a description.
Mario Kart Arcade GP 4x Multicabinet now works on one PC without any tricky IP configurations.
Added AMMBCommandBind, NetDIMMBind, and some helper functions.
Removed redundant settings.
2026-02-15 20:14:15 -06:00
Jordan Woyak
cf8573421c AMMediaboard: Clean up the defined memory ranges. 2026-02-15 20:14:15 -06:00
Jordan Woyak
93565eb8fa AMMediaboard: Save the IP from AMMBCommandModifyMyIPaddr for later use. 2026-02-15 20:14:15 -06:00
Joshua Vandaële
dc4645d255 SI_DeviceAMBaseboard: Shadowed variable "command" 2026-02-15 20:14:15 -06:00
Jordan Woyak
b2bbbb64bd SI_DeviceAMBaseboard: Fix signed/unsigned comparison. 2026-02-15 20:14:15 -06:00
Joshua Vandaële
7b0ee77840 SI_DeviceAMBaseboard: Comparing an unsigned int and an int 2026-02-15 20:14:15 -06:00
Joshua Vandaële
2c2bfc1fe1 Enums: Unhandled switch statement 2026-02-15 20:14:15 -06:00
Jordan Woyak
535c81c8df Triforce: Automatically set SuggestedAspectRatio as ForceStandard to work around widescreen heuristic issues. 2026-02-15 20:14:15 -06:00
Jordan Woyak
e14a58c1d8 AMMediaboard: Make AMMBCommandSocket determine socket protocol from domain and type rather than forcing TCP. 2026-02-15 20:14:15 -06:00
Jordan Woyak
32e4d88aa9 AMMediaboard: Improve connect() and bind() logging. 2026-02-15 20:14:15 -06:00
Jordan Woyak
a4fd5f8343 Triforce: Lazily load the game into memory using CachedBlobReader. 2026-02-15 20:14:15 -06:00
Jordan Woyak
3681cade41 DiscIO: Add IsCached virtual function to BlobReader. 2026-02-15 20:14:15 -06:00
Jordan Woyak
aaa7094442 Triforce: Implement save states. 2026-02-15 20:14:15 -06:00
Jordan Woyak
63dc3b1972 AMMediaboard: Adjust the verbosity of many LOG entries. 2026-02-15 20:14:15 -06:00
Jordan Woyak
bd3739ce08 AMMediaboard: Flatten the NetDIMMConnect function. 2026-02-15 20:14:15 -06:00
Jordan Woyak
0d7aef298e AMMediaboard: Increase size of NetworkBufferAddress3 area to fix Mario Kart Arcade GP multicab. 2026-02-15 20:14:15 -06:00
Jordan Woyak
af5e90a160 AMMediaboard: Introduce GuestSocketAddress to fix bad sin_family values.
I think the "family" field is only one byte.
2026-02-15 20:14:15 -06:00
Jordan Woyak
f8f74b58fd AMMediaboard: Clean up AMMBCommandModifyMyIPaddr. 2026-02-15 20:14:15 -06:00
Jordan Woyak
0075313dc9 AMMediaboard: Don't swap32 the IPv4 result in AMMBCommand::InetAddr. 2026-02-15 20:14:15 -06:00
Jordan Woyak
a876529a02 AMMediaboard: Minor adjustments to logging. 2026-02-15 20:14:15 -06:00
Jordan Woyak
7ab2672698 DolphinQt: Add user interface for Triforce IP address overrides. 2026-02-15 20:14:15 -06:00
Jordan Woyak
3e2b7fee46 AMMediaboard: Allow IP address overrides to be configured. 2026-02-15 20:14:15 -06:00
Jordan Woyak
5545798e00 Common/Network: Add structs: IPv4Port, IPv4PortRange and functions: IPAddressToString, ParseIPv4PortRange. 2026-02-15 20:14:15 -06:00
Jordan Woyak
97ad5ad1a1 StringUtil: Add SplitStringIntoArray function template. 2026-02-15 20:14:15 -06:00
Jordan Woyak
84b136c994 BootManager: Fix "enumeration value not handled in switch" warning. 2026-02-15 20:14:15 -06:00
Jordan Woyak
17027f0173 MainWindow: Remove the check preventing Triforce volumes from booting without the Baseboard hardware attached.
The hardware is now automatically attached later in the boot process.
2026-02-15 20:14:15 -06:00
Jordan Woyak
b15c593eec BootManager: Automatically attach Triforce Baseboard hardware. 2026-02-15 20:14:15 -06:00
Jordan Woyak
6a53c8f512 AMMediaboard: Make timeout 0ms in NetDIMMAccept to improve performance. 2026-02-15 20:14:15 -06:00
Jordan Woyak
4c61b9e009 AMMediaboard: Replace select() with PlatformPoll in NetDIMMConnect. 2026-02-15 20:14:15 -06:00
Jordan Woyak
587c825a9e AMMediaboard: Clean up and make a function for AMMBCommandAccept. 2026-02-15 20:14:15 -06:00
Jordan Woyak
5f6cd84ad7 AMMediaboard: Emulate AMMBCommandSelect using poll/WSAPoll. 2026-02-15 20:14:15 -06:00
Jordan Woyak
f25c467154 Common/UnixUtil: Only define CreateEventFD on Linux. 2026-02-15 20:14:15 -06:00
Jordan Woyak
0713045d4f AMMediaboard: Deduplicate code into AMMBCommandModifyMyIPaddr. 2026-02-15 20:14:15 -06:00
Jordan Woyak
ce85c4d81d AMMediaboard: Deduplicate code into AMMBCommandRecv. 2026-02-15 20:14:15 -06:00
Jordan Woyak
f7ff93bea6 AMMediaboard: Deduplicate code into AMMBCommandSend. 2026-02-15 20:14:15 -06:00
Jordan Woyak
69c143d8f0 AMMediaboard: Deduplicate code into AMMBCommandSocket. 2026-02-15 20:14:15 -06:00
Jordan Woyak
65def4e235 AMMediaboard: Deduplicate code into AMMBCommandSetSockOpt. 2026-02-15 20:14:15 -06:00
Jordan Woyak
6940309c2d AMMediaboard: Translate between guest and host FDs to fix AMMBCommand::Select behavior. 2026-02-15 20:14:15 -06:00
Jordan Woyak
cda344329a Common/BitUtils: Make SetBit constexpr. 2026-02-15 20:14:15 -06:00
Jordan Woyak
12df15eded AMMediaboard: Fix value in s_mediaboard_ranges array. 2026-02-15 20:14:15 -06:00
Jordan Woyak
f4b3f3cf0f AMMediaboard: Use SetPlatformSocketOptions and SEND_FLAGS. 2026-02-15 20:14:15 -06:00
Jordan Woyak
5d2e93fa3e Common: Add SetPlatformSocketOptions function and SEND_FLAGS constant to Network.h to deal with OS-specific SIGPIPE behavior. 2026-02-15 20:14:15 -06:00
Sepalani
2ffa7cec07 SI_DeviceAMBaseboard: Fix log issues related to GeneralDriverOutput 2026-02-15 20:14:15 -06:00
Sepalani
cbc7c2d385 SI_DeviceAMBaseboard: Add missing bounds checks
VolumeDisc: Fix Triforce's GetGameID memcpy by checking MakerID's size
2026-02-15 20:14:15 -06:00
Sepalani
0acb6145f7 Triforce: Fix remaining issues 2026-02-15 20:14:15 -06:00
Sepalani
355a4d8188 AMMediaboard: Fix several warnings 2026-02-15 20:14:15 -06:00
Sepalani
f3321b2893 SI_DeviceAMBaseboard: Improve bounds checking 2026-02-15 20:14:15 -06:00
Sepalani
bfd83f3a77 SI_DeviceAMBaseboard: Add validate_jvs_io helper 2026-02-15 20:14:15 -06:00
Sepalani
1c54e41a60 SI_DeviceAMBaseboard: Improve logging and validation edge cases 2026-02-15 20:14:15 -06:00
Sepalani
77cb65313d SI_DeviceAMBaseboard: Add validate_data_in_out helper 2026-02-15 20:14:15 -06:00
Sepalani
fcb4d27f1a AMBaseboard: Convert union ICCommand into struct 2026-02-15 20:14:14 -06:00
Sepalani
85707891cf Triforce: Address some logging and error checks 2026-02-15 20:14:14 -06:00
Sepalani
71ef512516 Triforce: Minor cleanups related to coding style and documentation 2026-02-15 20:14:14 -06:00
Jordan Woyak
2d9d7e4d89 AMMediaboard: Replace magic number 15 with a MAX_IPV4_STRING_LENGTH constant. 2026-02-15 20:14:14 -06:00
Jordan Woyak
a5eca09967 AMMediaboard: Add NetworkCMDBufferCheck calls for reading of timeout in Select commands. 2026-02-15 20:14:14 -06:00
Jordan Woyak
95442a2b6a Triforce: Warning silencing and other minor cleanups. 2026-02-15 20:14:14 -06:00
crediar
56ed7817de Triforce: Code fixes.
Fixed a bug caused by static usage of Core::System::GetInstance()
Removed unused headers
Removed unneeded code
Optimised code
Added sanity checks
Added SafeCopyFromEmu/SafeCopyToEmu
Set Triforce buttons to be translatable
2026-02-15 20:14:14 -06:00
crediar
ce802f1e62 Triforce: Optimized code
Removed unneeded code
Removed unused code
Added EINPROGRESS to fix networking on Linux systems
Added function NetworkBufferCheck and NetworkCMDBufferCheck  to verify buffer sizes
Added NetworkCMDBufferRead/NetworkCMDBufferWrite/NetworkBufferRead/NetworkBufferWrite
Added multiply buffer size checks
Rewrote GetGameType()
Moved AMMediaboard::Shutdown to DVDInterface::Shutdown()
Changed JVSIOMessage overrun check
Changed SwapBuffers function to be a member function
Added sanity checks for buffer sizes
Added translation prefix for Triforce buttons
Updated text for misconfigurations when trying to boot normal games with Triforce hardware connected
Fixed NAMCAM for Mario Kart GP
2026-02-15 20:14:14 -06:00
Jordan Woyak
be2da8dc7b Triforce: Code cleanups. 2026-02-15 20:14:14 -06:00
Jordan Woyak
083faa8b21 DiscIO: Make Volume::DecodeString take a std::span so it can work with std::array. 2026-02-15 20:14:14 -06:00
crediar
2c62214875 Added Triforce support 2026-02-15 20:14:14 -06:00
spaceage64
c08db74e6b Add classic controller support code for RUUE01 - Animal Crossing: City Folk (NTSC-U)
Added control scheme to codes.

Split .ini files based on Rev 0/1.

Added controller mapping instructions.

Added other regions and removed redundant lines.

Added Grass Deterioration cheats.

Changed wording regarding Right Stick variant.

Removed credits from RA Verified list.

Update ApprovedInis.json from PatchAllowlist test.

Updated approved list hash to match AchievementManager.

Attempted to fix the approved hash list again.

Update approved INI list and PatchAllowlist verification data
2026-02-15 19:41:40 +01:00
Martino Fontana
c9457cf906 Jit: Emit Branch Watch code only if it's enabled
JIT code related to Branch Watch was emitted if the debugging UI was active: the emitted code would dynamically check whether Branch Watch is active.
However, this causes two problems:
1. It decreases performance by just having the debugging UI enabled
2. It clutters the host assembly in the JIT tab, making it harder to read (unaware readers will wonder what these instructions are for)

With this PR, code related to Branch Watch is emitted only if Branch Watch itself is active, fixing the issues above.
The JIT cache will now be wiped whenever the feature is toggled, causing a slight stutter. However, this isn't the kind of feature that is toggled over and over, so IMO it is an acceptable trade-off.
2026-02-15 11:03:02 +01:00
JMC47
e387fa3732
Merge pull request #14385 from dreamsyntax/cpu-clock-max
Qt/Android: CPU Clock Override max to 500%
2026-02-15 03:38:23 -05:00
Dentomologist
0fbe38118e CheatsManager: Update code tabs on creation
Call `OnStateChanged` when creating CheatsManager to update the AR and
Gecko code tabs with codes for the currently running game (if any).

Previously, creating CheatsManager while a game was running wouldn't
show any codes until the next time the core state changed (excluding
Starting or Stopping which had no effect).

Fixes https://bugs.dolphin-emu.org/issues/13977.
2026-02-14 20:32:07 -08:00
Dentomologist
b398dc38e0
Merge pull request #12917 from JosJuice/transfer-sysconf-control
Explicitly transfer control of SYSCONF to emulated system
2026-02-14 11:35:59 -08:00
JosJuice
1cc9e8352f
Merge pull request #14329 from JosJuice/android-hotplug
Android: Rework input device hotplug
2026-02-14 17:43:38 +01:00
JosJuice
5440c7737f Explicitly transfer control of SYSCONF to emulated system
The functions SaveToSYSCONF and LoadFromSYSCONF contain checks for
whether emulation is running. The intent of this is that when we're
emulating a Wii, the emulated system may write to SYSCONF whenever it
likes and does not expect anything else to write to SYSCONF, so the
host code shouldn't access SYSCONF while emulation is ongoing. However,
Core::IsRunning is an imperfect proxy for whether we've handed over
control of SYSCONF to the emulated system yet, as the actual handover
happens at a slightly different point in time than when the emulation
state is changed. This usually isn't a problem, but in theory it could
be a determinism problem if a setting is changed right as emulation is
starting, or it could cause the emulated software to briefly misbehave
if a setting is changed right as emulation is stopping.

Things got worse in 72cf2bdb87 when I
replaced the Core::IsRunning calls with !Core::IsUninitialized. With
IsRunning, there was be a period of time where SYSCONF should have been
protected but wasn't. With !IsUninitialized, there was a period of time
where SYSCONF shouldn't have been protected but was, and crucially, this
period of time included the moments where we do setup and teardown of
the emulated NAND, which broke transferring SYSCONF settings between the
host and the guest. 72cf2bdb87 was
reverted because of this.

This commit adds a flag that we explicitly flip when control is handed
over to or from the emulated system. This protects the SYSCONF file
for exactly as long as is needed.
2026-02-14 10:05:27 +01:00
TryTwo
954219f781 Cheat Search: Add ability to delete items and fix duplicate commands when multiple row items are selected.
Changes it to select rows then extracts one item from each row to operate on. The behavior and data across each item in a row was already identical, so using rows doesn't change anything.
2026-02-13 16:45:00 -07:00
dreamsyntax
e1e1485582 Qt/Android: CPU Clock Override max to 500% 2026-02-12 18:39:05 -07:00
JosJuice
ea80945912
Merge pull request #14342 from sepalani/hdr-mic
IOS/USB: Add missing vector header in Emulated/Microphone.h
2026-02-11 20:25:34 +01:00
Sepalani
6f3282e073 IOS/USB: Add missing vector header in Emulated/Microphone.h 2026-02-11 18:25:15 +04:00
Sepalani
ddcf0413c1 EXI_Device: Add missing include for PanicAlertFmtT 2026-02-11 18:08:41 +04:00
Jordan Woyak
2ba9af9e60 ChunkFile: Prevent PointerWrap::Do(T&) from compiling with pointers. 2026-02-10 06:44:36 -06:00
JosJuice
bd92388d2f Android: Rework input device hotplug
Previously, when an input device was connected or disconnected, we would
recreate all devices. This commit makes it so we only touch the relevant
device instead. This matters because recreating a device causes us to
drop all held buttons for that device. Due to Android only delivering
inputs as events, we're unable to poll for currently held buttons when
recreating a device.

This recently became a problem for users of Ayn devices due to a
firmware update. Every now and then, something about the display
viewports changes, triggering an update to an input device that I assume
is a touch input device. This input device isn't something users
normally map in Dolphin's controller settings, but it changing was
causing Dolphin to drop all held buttons for the device's built-in
gamepad as well as any other connected gamepads.
2026-02-08 10:38:43 +01:00
oltolm
60351c19cc Misc: fix compiler warning: implicit declaration of function 2026-02-08 00:37:29 +01:00