<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Android, branch 2603</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Android: Fix defaults for RetroAchievements settings</title>
<updated>2026-02-23T18:24:58+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-02-23T18:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=99d82829c84880402784ae1ace684e0f6e635ef6'/>
<id>99d82829c84880402784ae1ace684e0f6e635ef6</id>
<content type='text'>
Default values for settings need to be the same in Kotlin and C++,
otherwise settings that haven't been changed by the user will be shown
as having one value in the Android GUI but treated as having a different
value in the core.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Default values for settings need to be the same in Kotlin and C++,
otherwise settings that haven't been changed by the user will be shown
as having one value in the Android GUI but treated as having a different
value in the core.
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Add Triforce Baseboard</title>
<updated>2026-02-16T05:13:18+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-02-07T10:03:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=051133787e77a154c83fcf54c7acc83b76fe7d81'/>
<id>051133787e77a154c83fcf54c7acc83b76fe7d81</id>
<content type='text'>
This lets users select Triforce Baseboard for SI and SP1. Limitations:

* The test, service and coin buttons can be bound to gamepads and other
  physical inputs, but aren't available in the touch input overlay.
* The IP redirections are exposed to the user as a raw string rather than
  a table like in DolphinQt.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This lets users select Triforce Baseboard for SI and SP1. Limitations:

* The test, service and coin buttons can be bound to gamepads and other
  physical inputs, but aren't available in the touch input overlay.
* The IP redirections are exposed to the user as a raw string rather than
  a table like in DolphinQt.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #14385 from dreamsyntax/cpu-clock-max</title>
<updated>2026-02-15T08:38:23+00:00</updated>
<author>
<name>JMC47</name>
<email>JMC4789@gmail.com</email>
</author>
<published>2026-02-15T08:38:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e387fa37324a5c5849c874660e94a79cb04adf14'/>
<id>e387fa37324a5c5849c874660e94a79cb04adf14</id>
<content type='text'>
Qt/Android: CPU Clock Override max to 500%</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Qt/Android: CPU Clock Override max to 500%</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #12917 from JosJuice/transfer-sysconf-control</title>
<updated>2026-02-14T19:35:59+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2026-02-14T19:35:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b398dc38e03991814a28952f1cc2af81072cb154'/>
<id>b398dc38e03991814a28952f1cc2af81072cb154</id>
<content type='text'>
Explicitly transfer control of SYSCONF to emulated system</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Explicitly transfer control of SYSCONF to emulated system</pre>
</div>
</content>
</entry>
<entry>
<title>Explicitly transfer control of SYSCONF to emulated system</title>
<updated>2026-02-14T09:05:27+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-07-06T21:31:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5440c7737fdc39b17656d437c25bf6cb9f369dbe'/>
<id>5440c7737fdc39b17656d437c25bf6cb9f369dbe</id>
<content type='text'>
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 72cf2bdb87f09deff22e1085de3290126aa4ad05 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. 72cf2bdb87f09deff22e1085de3290126aa4ad05 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 72cf2bdb87f09deff22e1085de3290126aa4ad05 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. 72cf2bdb87f09deff22e1085de3290126aa4ad05 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Qt/Android: CPU Clock Override max to 500%</title>
<updated>2026-02-13T01:39:05+00:00</updated>
<author>
<name>dreamsyntax</name>
<email>dreamsyntax@gmail.com</email>
</author>
<published>2026-02-13T01:39:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e1e1485582f31b2ae6b9c37885427f2cf325af18'/>
<id>e1e1485582f31b2ae6b9c37885427f2cf325af18</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Rework input device hotplug</title>
<updated>2026-02-08T09:38:43+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-02-07T15:36:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=bd92388d2f36c32dee474cbcb5a0e0bba5035656'/>
<id>bd92388d2f36c32dee474cbcb5a0e0bba5035656</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13594 from jordan-woyak/state-cleanups</title>
<updated>2026-02-03T22:50:52+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2026-02-03T22:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=dd2b94cd4a71fb6abda72f58d27434ef2d8b0a5f'/>
<id>dd2b94cd4a71fb6abda72f58d27434ef2d8b0a5f</id>
<content type='text'>
State: Simplify interthread communication and general cleanups.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
State: Simplify interthread communication and general cleanups.</pre>
</div>
</content>
</entry>
<entry>
<title>feat: Add an option to preserve audio pitch when emulation speed changes, integrating it into core configuration and both Qt and Android UIs.</title>
<updated>2026-01-27T23:48:22+00:00</updated>
<author>
<name>Sam Belliveau</name>
<email>sam.belliveau@gmail.com</email>
</author>
<published>2026-01-27T23:48:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=51c8f18b73727afaea0991e10789998eaacbe487'/>
<id>51c8f18b73727afaea0991e10789998eaacbe487</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove VectorToJStringArray</title>
<updated>2026-01-24T15:50:10+00:00</updated>
<author>
<name>Sintendo</name>
<email>3380580+Sintendo@users.noreply.github.com</email>
</author>
<published>2025-12-26T20:57:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=60ca0626dfc2a59cc2e8145d0ee5c7d95f7d0ab5'/>
<id>60ca0626dfc2a59cc2e8145d0ee5c7d95f7d0ab5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
