mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-02-01 04:05:38 +00:00
8a1b4d8bee
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. |
||
---|---|---|
.. | ||
common | ||
common-tests | ||
core | ||
duckstation-nogui | ||
duckstation-qt | ||
duckstation-regtest | ||
scmversion | ||
updater | ||
util | ||
CMakeLists.txt |