Duckstation/src
Stenzek 8a1b4d8bee
DMA: Halt linked list transfers during pad transfer
Plenty of games seem to suffer from this issue where they have a linked list
DMA going while polling the controller. Having a large slice size causes the
serial transfer to complete before the silly busy wait in the BIOS poll routine
returns, resulting in it thinking that the controller is disconnected. Some
games are very sensitive to this (e.g. Newman Haas Racing), to the point that
even using a slice size of 1 is insufficient for avoiding the race, probably
due to the linked list layout.

Therefore, without major refactoring to ensure the CPU runs every DMA block,
and the associated performance penalty, we just halt the DMA until the serial
transfers have completed. To reduce the chances of this significantly affecting
timing, we add accumulate the ticks that have been "lost", and allow them to be
"used up" when the transfer does happen.
2024-04-07 18:55:03 +10:00
..
common ByteStream: Add error feedback 2024-04-07 13:10:34 +10:00
common-tests FileSystem: Use PathCchCanonicalizeEx() for GetWin32Path() 2024-03-30 00:46:38 +10:00
core DMA: Halt linked list transfers during pad transfer 2024-04-07 18:55:03 +10:00
duckstation-nogui NoGUI: Add SDL platform 2024-03-21 01:53:44 +10:00
duckstation-qt MemoryCardImage: Report errors to caller 2024-04-07 13:23:00 +10:00
duckstation-regtest Qt: Add copy/clear game settings 2024-03-21 00:50:57 +10:00
scmversion Misc: Build fixes for Android 2023-11-04 20:11:51 +10:00
updater Deps: Speed up shaderc build 2024-04-06 00:12:16 +10:00
util GPUDevice: Swap out glslang for shaderc 2024-04-05 17:53:24 +10:00
CMakeLists.txt Updater: Mac support 2023-09-24 12:21:19 +10:00