GB Audio: Fix deserializing audio channels 2 and 3

This commit is contained in:
Vicki Pfau 2020-08-10 22:06:43 -07:00
parent c38ee0ff09
commit 84f93c39b9
2 changed files with 3 additions and 2 deletions

View File

@ -1,6 +1,7 @@
0.8.4: (Future) 0.8.4: (Future)
Emulation fixes: Emulation fixes:
- GB Audio: Fix initial sweep state - GB Audio: Fix initial sweep state
- GB Audio: Fix deserializing audio channels 2 and 3
- GBA Audio: Fix deserializing SOUNDCNT_L - GBA Audio: Fix deserializing SOUNDCNT_L
- GBA Video: Invalidate map cache when modifying BGCNT (fixes mgba.io/i/1846) - GBA Video: Invalidate map cache when modifying BGCNT (fixes mgba.io/i/1846)
Other fixes: Other fixes:

View File

@ -707,14 +707,14 @@ void GBIODeserialize(struct GB* gb, const struct GBSerializedState* state) {
gb->audio.ch1.control.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR14] << 8); gb->audio.ch1.control.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR14] << 8);
GBIOWrite(gb, REG_NR21, gb->memory.io[REG_NR21]); GBIOWrite(gb, REG_NR21, gb->memory.io[REG_NR21]);
GBIOWrite(gb, REG_NR22, gb->memory.io[REG_NR22]); GBIOWrite(gb, REG_NR22, gb->memory.io[REG_NR22]);
GBIOWrite(gb, REG_NR22, gb->memory.io[REG_NR23]); GBIOWrite(gb, REG_NR23, gb->memory.io[REG_NR23]);
gb->audio.ch2.control.frequency &= 0xFF; gb->audio.ch2.control.frequency &= 0xFF;
gb->audio.ch2.control.frequency |= GBAudioRegisterControlGetFrequency(gb->memory.io[REG_NR24] << 8); gb->audio.ch2.control.frequency |= GBAudioRegisterControlGetFrequency(gb->memory.io[REG_NR24] << 8);
gb->audio.ch2.control.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR24] << 8); gb->audio.ch2.control.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR24] << 8);
GBIOWrite(gb, REG_NR30, gb->memory.io[REG_NR30]); GBIOWrite(gb, REG_NR30, gb->memory.io[REG_NR30]);
GBIOWrite(gb, REG_NR31, gb->memory.io[REG_NR31]); GBIOWrite(gb, REG_NR31, gb->memory.io[REG_NR31]);
GBIOWrite(gb, REG_NR32, gb->memory.io[REG_NR32]); GBIOWrite(gb, REG_NR32, gb->memory.io[REG_NR32]);
GBIOWrite(gb, REG_NR32, gb->memory.io[REG_NR33]); GBIOWrite(gb, REG_NR33, gb->memory.io[REG_NR33]);
gb->audio.ch3.rate &= 0xFF; gb->audio.ch3.rate &= 0xFF;
gb->audio.ch3.rate |= GBAudioRegisterControlGetRate(gb->memory.io[REG_NR34] << 8); gb->audio.ch3.rate |= GBAudioRegisterControlGetRate(gb->memory.io[REG_NR34] << 8);
gb->audio.ch3.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR34] << 8); gb->audio.ch3.stop = GBAudioRegisterControlGetStop(gb->memory.io[REG_NR34] << 8);