maple: don't assert dma interrupt if using hardware dma trigger

Fixes Virtua Cop 2 pause when shooting. Regression due to ecce915
Issue #474
This commit is contained in:
Flyinghead 2024-08-17 17:23:34 +02:00
parent 00f60a3d62
commit cb0b667129
1 changed files with 17 additions and 22 deletions

View File

@ -47,34 +47,29 @@ void maple_vblank()
{
if (SB_MDEN & 1)
{
if (SDCKBOccupied)
if (SB_MDTSEL == 1)
{
maple_schd(0, 0, 0, nullptr);
SDCKBOccupied = false;
}
else
{
if (SB_MDTSEL == 1)
{
if (maple_ddt_pending_reset)
{
DEBUG_LOG(MAPLE, "DDT vblank ; reset pending");
}
else
{
DEBUG_LOG(MAPLE, "DDT vblank");
SB_MDST = 1;
maple_DoDma();
// if trigger reset is manual, mark it as pending
if ((SB_MSYS >> 12) & 1)
maple_ddt_pending_reset = true;
}
// Hardware trigger on vblank
if (maple_ddt_pending_reset) {
DEBUG_LOG(MAPLE, "DDT vblank ; reset pending");
}
else
{
maple_ddt_pending_reset = false;
DEBUG_LOG(MAPLE, "DDT vblank");
SB_MDST = 1;
maple_DoDma();
// if trigger reset is manual, mark it as pending
if ((SB_MSYS >> 12) & 1)
maple_ddt_pending_reset = true;
}
}
else
{
maple_ddt_pending_reset = false;
if (SDCKBOccupied)
maple_schd(0, 0, 0, nullptr);
}
SDCKBOccupied = false;
}
if (settings.platform.isConsole())
maple_handle_reconnect();