mirror of https://github.com/mgba-emu/mgba.git
GB SIO: Disabling SIO should cancel pending transfers (fixes #2537)
This commit is contained in:
parent
abf0848421
commit
36e62c085d
1
CHANGES
1
CHANGES
|
@ -7,6 +7,7 @@ Features:
|
||||||
Emulation fixes:
|
Emulation fixes:
|
||||||
- GB Audio: Fix channels 1/2 staying muted if restarted after long silence
|
- GB Audio: Fix channels 1/2 staying muted if restarted after long silence
|
||||||
- GB Serialize: Add missing Pocket Cam state to savestates
|
- GB Serialize: Add missing Pocket Cam state to savestates
|
||||||
|
- GB SIO: Disabling SIO should cancel pending transfers (fixes mgba.io/i/2537)
|
||||||
- GB Video: Implement DMG-style sprite ordering
|
- GB Video: Implement DMG-style sprite ordering
|
||||||
- GBA BIOS: Fix clobbering registers with word-sized CpuSet
|
- GBA BIOS: Fix clobbering registers with word-sized CpuSet
|
||||||
- GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722)
|
- GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722)
|
||||||
|
|
|
@ -91,11 +91,13 @@ void GBSIOWriteSB(struct GBSIO* sio, uint8_t sb) {
|
||||||
void GBSIOWriteSC(struct GBSIO* sio, uint8_t sc) {
|
void GBSIOWriteSC(struct GBSIO* sio, uint8_t sc) {
|
||||||
sio->period = GBSIOCyclesPerTransfer[GBRegisterSCGetClockSpeed(sc)]; // TODO Shift Clock
|
sio->period = GBSIOCyclesPerTransfer[GBRegisterSCGetClockSpeed(sc)]; // TODO Shift Clock
|
||||||
if (GBRegisterSCIsEnable(sc)) {
|
if (GBRegisterSCIsEnable(sc)) {
|
||||||
mTimingDeschedule(&sio->p->timing, &sio->event);
|
|
||||||
if (GBRegisterSCIsShiftClock(sc)) {
|
if (GBRegisterSCIsShiftClock(sc)) {
|
||||||
|
mTimingDeschedule(&sio->p->timing, &sio->event);
|
||||||
mTimingSchedule(&sio->p->timing, &sio->event, sio->period * (2 - sio->p->doubleSpeed));
|
mTimingSchedule(&sio->p->timing, &sio->event, sio->period * (2 - sio->p->doubleSpeed));
|
||||||
sio->remainingBits = 8;
|
sio->remainingBits = 8;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
mTimingDeschedule(&sio->p->timing, &sio->event);
|
||||||
}
|
}
|
||||||
if (sio->driver) {
|
if (sio->driver) {
|
||||||
sio->driver->writeSC(sio->driver, sc);
|
sio->driver->writeSC(sio->driver, sc);
|
||||||
|
|
Loading…
Reference in New Issue