Merge pull request #151 from gm-matthew/sound-irq

Sound IRQs are acknowledged by writing to MIDI data port
This commit is contained in:
dukeeeey 2024-05-20 19:31:25 +01:00 committed by GitHub
commit 976f0208dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1419,7 +1419,10 @@ void CModel3::Write8(UINT32 addr, UINT8 data)
case 0x08:
//printf("PPC: %08X=%02X * (PC=%08X, LR=%08X)\n", addr, data, ppc_get_pc(), ppc_get_lr());
if ((addr & 0xF) == 0) // MIDI data port
{
SoundBoard.WriteMIDIPort(data);
IRQ.Deassert(0x40);
}
else if ((addr&0xF) == 4) // MIDI control port
midiCtrlPort = data;
break;
@ -2133,9 +2136,7 @@ void CModel3::RunMainBoardFrame(void)
// Process MIDI interrupt
IRQ.Assert(0x40);
ppc_execute(200); // give PowerPC time to acknowledge IR
IRQ.Deassert(0x40);
ppc_execute(200); // acknowledge that IRQ was deasserted (TODO: is this really needed?)
ppc_execute(400); // give PowerPC time to acknowledge IR
dispCycles -= 400;
++irqCount;