Permalink
Browse files

GB Timer: Fix low bit of DIV resetting

  • Loading branch information...
endrift committed Feb 4, 2018
1 parent 0ce3b9a commit a382c1ee9bb7bc79ce0445658eb2d4d771554766
Showing with 1 addition and 2 deletions.
  1. +0 −1 cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/manifest.yml
  2. +1 −1 src/gb/timer.c
View
@@ -70,7 +70,7 @@ void GBTimerDivReset(struct GBTimer* timer) {
timer->nextDiv -= mTimingUntil(&timer->p->timing, &timer->event);
mTimingDeschedule(&timer->p->timing, &timer->event);
_GBTimerDivIncrement(timer, (timer->p->cpu->executionState + 1) & 3);
- if (timer->internalDiv & (timer->timaPeriod >> 1)) {
+ if (((timer->internalDiv << 1) | ((timer->nextDiv >> 3) & 1)) & timer->timaPeriod) {
++timer->p->memory.io[REG_TIMA];
if (!timer->p->memory.io[REG_TIMA]) {
mTimingSchedule(&timer->p->timing, &timer->irq, 4 - ((timer->p->cpu->executionState + 1) & 3));

0 comments on commit a382c1e

Please sign in to comment.