Schedule the interrupt signaling the end of an Aica DMA transfer #1412
Conversation
of raising it immediately. Fixes Street Fighter Alpha 3 and Bomberman Online
I'd suggest to comment that this is a hack, to avoid negative side-effects if it's handled properly in the future. |
This is definitely a step in the right direction. There's various nuances that we should implement, or at least assert about, like dma pauses, g1/g2 locks, and dma aborts. This is much cleaner than other diffs I've seen trying to make DMAs take time. @flyinghead do you want to add detection for pauses / aborts before merging this in? I'm fine with us handling it at a later time. Created a general follow up ticket, #1414. @MrPsyMan do you think this should be included in the 18.10 release? I'd be wary to push it out without a thorough pass of 60/70 games myself, because of how easily timing can break games, and how much unimplemented functionality is exposed by making the DMA not be instant. I'm also wary that without asserts for unhandled cases we'll get 'silent breaks' that are only found out months later. Am I too cautious? edit edit 2 edit 3 |
Isn't the purpose of this to do away with needing to configure it at all and actually fix the functionality, though? It seems like that would be 2 steps forward, one step back. |
I'd say to add it as an option enabled by default, until more related functionality is implemented. If it turns out it breaks something, it'd be far easier to pinpoint if this is the cause when the users can turn it off. |
Schedule the interrupt signaling the end of an Aica DMA transfer instead of raising it immediately.
Fixes Street Fighter Alpha 3 and Bomberman Online