mirror of https://github.com/mgba-emu/mgba.git
GBA Timer: Fix timers sometimes being late (fixes #1012)
This commit is contained in:
parent
016e1596f7
commit
fc53fc9647
1
CHANGES
1
CHANGES
|
@ -55,6 +55,7 @@ Bugfixes:
|
|||
- Python: Fix package directory
|
||||
- GB Memory: Fix OAM DMA blocking regions (fixes mgba.io/i/1013)
|
||||
- Wii: Fix various setup and teardown drawing issues (fixes mgba.io/i/988)
|
||||
- GBA Timer: Fix timers sometimes being late (fixes mgba.io/i/1012)
|
||||
Misc:
|
||||
- GBA Timer: Use global cycles for timers
|
||||
- GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
|
||||
|
|
|
@ -51,7 +51,7 @@ static void GBATimerUpdate(struct GBA* gba, int timerId, uint32_t cyclesLate) {
|
|||
int32_t tickMask = (1 << GBATimerFlagsGetPrescaleBits(timer->flags)) - 1;
|
||||
currentTime &= ~tickMask;
|
||||
timer->lastEvent = currentTime;
|
||||
GBATimerUpdateRegister(gba, timerId, 0);
|
||||
GBATimerUpdateRegister(gba, timerId, TIMER_RELOAD_DELAY + cyclesLate);
|
||||
|
||||
if (GBATimerFlagsIsDoIrq(timer->flags)) {
|
||||
timer->flags = GBATimerFlagsFillIrqPending(timer->flags);
|
||||
|
@ -155,7 +155,7 @@ void GBATimerUpdateRegister(struct GBA* gba, int timer, int32_t cyclesLate) {
|
|||
if (!mTimingIsScheduled(&gba->timing, ¤tTimer->event)) {
|
||||
tickIncrement = (0x10000 - tickIncrement) << prescaleBits;
|
||||
currentTime -= mTimingCurrentTime(&gba->timing) - cyclesLate;
|
||||
mTimingSchedule(&gba->timing, ¤tTimer->event, TIMER_RELOAD_DELAY + tickIncrement + currentTime);
|
||||
mTimingSchedule(&gba->timing, ¤tTimer->event, tickIncrement + currentTime);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue