diff --git a/src/gba/serialize.c b/src/gba/serialize.c index ba82c30a8..4da2501a9 100644 --- a/src/gba/serialize.c +++ b/src/gba/serialize.c @@ -103,11 +103,16 @@ bool GBADeserialize(struct GBA* gba, const struct GBASerializedState* state) { GBALog(gba, GBA_LOG_WARN, "Savestate is corrupted: audio eventDiff is negative"); error = true; } - if (state->audio.ch1.envelopeNextStep < 0 || state->audio.ch1.waveNextStep < 0 || state->audio.ch1.sweepNextStep < 0 || state->audio.ch1.nextEvent < 0) { + if (!state->audio.ch1Dead && (state->audio.ch1.envelopeNextStep < 0 || + state->audio.ch1.waveNextStep < 0 || + state->audio.ch1.sweepNextStep < 0 || + state->audio.ch1.nextEvent < 0)) { GBALog(gba, GBA_LOG_WARN, "Savestate is corrupted: audio channel 1 register is negative"); error = true; } - if (state->audio.ch2.envelopeNextStep < 0 || state->audio.ch2.waveNextStep < 0 || state->audio.ch2.nextEvent < 0) { + if (!state->audio.ch2Dead && (state->audio.ch2.envelopeNextStep < 0 || + state->audio.ch2.waveNextStep < 0 || + state->audio.ch2.nextEvent < 0)) { GBALog(gba, GBA_LOG_WARN, "Savestate is corrupted: audio channel 2 register is negative"); error = true; } @@ -115,7 +120,8 @@ bool GBADeserialize(struct GBA* gba, const struct GBASerializedState* state) { GBALog(gba, GBA_LOG_WARN, "Savestate is corrupted: audio channel 3 register is negative"); error = true; } - if (state->audio.ch4.envelopeNextStep < 0 || state->audio.ch4.nextEvent < 0) { + if (!state->audio.ch4Dead && (state->audio.ch4.envelopeNextStep < 0 || + state->audio.ch4.nextEvent < 0)) { GBALog(gba, GBA_LOG_WARN, "Savestate is corrupted: audio channel 4 register is negative"); error = true; }