diff --git a/Machines/Apple/AppleIIgs/Sound.cpp b/Machines/Apple/AppleIIgs/Sound.cpp index 6e9b6e9d4..b7d51e7c5 100644 --- a/Machines/Apple/AppleIIgs/Sound.cpp +++ b/Machines/Apple/AppleIIgs/Sound.cpp @@ -15,7 +15,14 @@ using namespace Apple::IIgs::Sound; -GLU::GLU(Concurrency::DeferringAsyncTaskQueue &audio_queue) : audio_queue_(audio_queue) {} +GLU::GLU(Concurrency::DeferringAsyncTaskQueue &audio_queue) : audio_queue_(audio_queue) { + // Reset all pending stores. + MemoryWrite disabled_write; + disabled_write.enabled = false; + for(int c = 0; c < StoreBufferSize; c++) { + pending_stores_[c].store(disabled_write); + } +} void GLU::set_data(uint8_t data) { if(local_.control & 0x40) { diff --git a/Machines/Apple/AppleIIgs/Sound.hpp b/Machines/Apple/AppleIIgs/Sound.hpp index 4ef9b0bef..609de9434 100644 --- a/Machines/Apple/AppleIIgs/Sound.hpp +++ b/Machines/Apple/AppleIIgs/Sound.hpp @@ -50,8 +50,6 @@ class GLU: public Outputs::Speaker::SampleSource { // Assumed: on most modern architectures, an atomic 64-bit read or // write can be achieved locklessly. struct MemoryWrite { - MemoryWrite() : enabled(false) {} - uint32_t time; uint16_t address; uint8_t value; diff --git a/Machines/Apple/AppleIIgs/Video.cpp b/Machines/Apple/AppleIIgs/Video.cpp index 36bd6caa2..9614d2f4e 100644 --- a/Machines/Apple/AppleIIgs/Video.cpp +++ b/Machines/Apple/AppleIIgs/Video.cpp @@ -388,10 +388,10 @@ uint16_t *VideoBase::output_super_high_res(uint16_t *target, int start, int end, if(line_control_ & 0x80) { for(int c = start * 4; c < end * 4; c++) { const uint8_t source = ram_[row_address + c]; - target[0] = palette_[0x8 + (source >> 6) & 0x3]; - target[1] = palette_[0xc + (source >> 4) & 0x3]; - target[2] = palette_[0x0 + (source >> 2) & 0x3]; - target[3] = palette_[0x4 + (source >> 0) & 0x3]; + target[0] = palette_[0x8 + ((source >> 6) & 0x3)]; + target[1] = palette_[0xc + ((source >> 4) & 0x3)]; + target[2] = palette_[0x0 + ((source >> 2) & 0x3)]; + target[3] = palette_[0x4 + ((source >> 0) & 0x3)]; target += 4; } } else {