Conversation
Commit 36d23cc inverted the condition for calling ExecTimerDmaSerial, swapping the cycle parity so that ExecTimerDmaSerial could no longer handle serial data. This broke Shin Megami Tensei: Devil Children: Kuro no Sho in GB and SGB modes. Tested with automated tests (no change) and Shin Megami Tensei: Devil Children: Kuro no Sho (no longer broken). Thanks to paulb_nl for finding the cause of this issue and Sour for reviewing the commit that introduced the issue.
|
Forum post from paulb_nl reporting the regression, for reference: https://forums.nesdev.org/viewtopic.php?p=308144&sid=50d111a130df9c018d8327dc3e29ea67#p308144 I realise the regression tripped up this game because it constantly attempts serial communication and runs a halt instruction to wait for multiple IRQ sources - it just so happened that it was sometimes disabling everything except serial IRQs and thus expected a serial IRQ to wake it up from a halt. I'll note here that cross-system serial communication (i.e. link cable) support isn't implemented (writes go nowhere and reads always shift in 1s, i.e. always disconnected), so it's currently impossible to fully test the serial implementation. I've also noticed the GBC-exclusive serial clock speed bit ($FF02.D1 write, can be combined with double-speed mode) is also missing an implementation. Otherwise, the fix LGTM. |
Commit 36d23cc inverted the condition for calling ExecTimerDmaSerial, swapping the cycle parity so that ExecTimerDmaSerial could no longer handle serial data. This broke Shin Megami Tensei: Devil Children: Kuro no Sho in GB and SGB modes.
Tested with automated tests (no change) and Shin Megami Tensei: Devil Children: Kuro no Sho (no longer broken).
Thanks to paulb_nl for finding the cause of this issue and Sour for reviewing the commit that introduced the issue.