From e5c19bc66ced47f1f4da4ca04fff3f42a50e14c9 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Jul 2017 16:22:40 -0700 Subject: [PATCH] GB Serialize: Fix timer serialization --- CHANGES | 1 + src/gb/timer.c | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 1e9145c11..837dc25ab 100644 --- a/CHANGES +++ b/CHANGES @@ -166,6 +166,7 @@ Bugfixes: - GBA SIO: Improve SIO Normal dummy driver (fixes mgba.io/i/520) - Qt: Fix patch loading while a game is running - Qt: Fix shader selector on Ubuntu (fixes mgba.io/i/767) + - GB Serialize: Fix timer serialization Misc: - Qt: Add language selector - GBA Timer: Improve accuracy of timers diff --git a/src/gb/timer.c b/src/gb/timer.c index ad9e6c788..0e587410d 100644 --- a/src/gb/timer.c +++ b/src/gb/timer.c @@ -118,7 +118,7 @@ void GBTimerSerialize(const struct GBTimer* timer, struct GBSerializedState* sta STORE_32LE(timer->event.when - mTimingCurrentTime(&timer->p->timing), 0, &state->timer.nextEvent); STORE_32LE(timer->irq.when - mTimingCurrentTime(&timer->p->timing), 0, &state->timer.nextIRQ); GBSerializedTimerFlags flags = GBSerializedTimerFlagsSetIrqPending(0, mTimingIsScheduled(&timer->p->timing, &timer->irq)); - STORE_32LE(flags, 0, &state->timer.flags); + state->timer.flags = flags; } void GBTimerDeserialize(struct GBTimer* timer, const struct GBSerializedState* state) { @@ -130,8 +130,7 @@ void GBTimerDeserialize(struct GBTimer* timer, const struct GBSerializedState* s LOAD_32LE(when, 0, &state->timer.nextEvent); mTimingSchedule(&timer->p->timing, &timer->event, when); - GBSerializedTimerFlags flags; - LOAD_32LE(flags, 0, &state->timer.flags); + GBSerializedTimerFlags flags = state->timer.flags; if (GBSerializedTimerFlagsIsIrqPending(flags)) { LOAD_32LE(when, 0, &state->timer.nextIRQ);