# HG changeset patch # User Michael Pavone # Date 1482875941 28800 # Node ID 63cd87d910cc92ceb95dcc6532c82e5c1d2c76f2 # Parent fba4859497236cd27d1a097b242743e8082909dd Clear interrupt status flags after getting the status register value rather than before diff -r fba485949723 -r 63cd87d910cc sms.c --- a/sms.c Tue Dec 27 13:46:06 2016 -0800 +++ b/sms.c Tue Dec 27 13:59:01 2016 -0800 @@ -56,9 +56,10 @@ sms_context *sms = z80->system; vdp_run_context(sms->vdp, z80->current_cycle); if (location & 1) { + uint8_t ret = vdp_control_port_read(sms->vdp); sms->vdp->flags2 &= ~(FLAG2_VINT_PENDING|FLAG2_HINT_PENDING); update_interrupts(sms); - return vdp_control_port_read(sms->vdp); + return ret; } else { return vdp_data_port_read(sms->vdp); }