diff --git a/Machines/Amiga/Chipset.cpp b/Machines/Amiga/Chipset.cpp index 2c086e003..eeace85f0 100644 --- a/Machines/Amiga/Chipset.cpp +++ b/Machines/Amiga/Chipset.cpp @@ -168,29 +168,35 @@ template void Chipset::output() { ((current_bitplanes_[3]&1) << 3) | ((current_bitplanes_[4]&1) << 4) ]; - pixels_[1] = palette_[ - ((current_bitplanes_[0]&2) >> 1) | - ((current_bitplanes_[1]&2) << 0) | - ((current_bitplanes_[2]&2) << 1) | - ((current_bitplanes_[3]&2) << 2) | - ((current_bitplanes_[4]&2) << 3) - ]; - pixels_[2] = palette_[ - ((current_bitplanes_[0]&4) >> 2) | - ((current_bitplanes_[1]&4) >> 1) | - ((current_bitplanes_[2]&4) << 0) | - ((current_bitplanes_[3]&4) << 1) | - ((current_bitplanes_[4]&4) << 2) - ]; - pixels_[3] = palette_[ - ((current_bitplanes_[0]&8) >> 3) | - ((current_bitplanes_[1]&8) >> 2) | - ((current_bitplanes_[2]&8) >> 1) | - ((current_bitplanes_[3]&8) << 0) | - ((current_bitplanes_[4]&8) << 1) - ]; + current_bitplanes_ >>= is_high_res_; + + pixels_[1] = palette_[ + ((current_bitplanes_[0]&1) << 0) | + ((current_bitplanes_[1]&1) << 1) | + ((current_bitplanes_[2]&1) << 2) | + ((current_bitplanes_[3]&1) << 3) | + ((current_bitplanes_[4]&1) << 4) + ]; + current_bitplanes_ >>= 1; + + pixels_[2] = palette_[ + ((current_bitplanes_[0]&1) << 0) | + ((current_bitplanes_[1]&1) << 1) | + ((current_bitplanes_[2]&1) << 2) | + ((current_bitplanes_[3]&1) << 3) | + ((current_bitplanes_[4]&1) << 4) + ]; + current_bitplanes_ >>= is_high_res_; + + pixels_[3] = palette_[ + ((current_bitplanes_[0]&1) << 0) | + ((current_bitplanes_[1]&1) << 1) | + ((current_bitplanes_[2]&1) << 2) | + ((current_bitplanes_[3]&1) << 3) | + ((current_bitplanes_[4]&1) << 4) + ]; + current_bitplanes_ >>= 1; - current_bitplanes_ >>= 4; pixels_ += 4; } } @@ -593,6 +599,7 @@ void Chipset::perform(const CPU::MC68000::Microcycle &cycle) { case Write(0x100): bitplanes_.set_control(cycle.value16()); + is_high_res_ = cycle.value16() & 0x8000; break; case Write(0x104): diff --git a/Machines/Amiga/Chipset.hpp b/Machines/Amiga/Chipset.hpp index 34700bd96..37aa66944 100644 --- a/Machines/Amiga/Chipset.hpp +++ b/Machines/Amiga/Chipset.hpp @@ -188,6 +188,7 @@ class Chipset { // std::array even_playfield_; // std::array odd_playfield_; int odd_delay_ = 0, even_delay_ = 0; + bool is_high_res_ = false; // MARK: - Copper.