1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-27 00:30:26 +00:00

Takes a shot at low resolution shifting.

This commit is contained in:
Thomas Harte 2021-09-20 19:00:52 -04:00
parent a4263b5a8c
commit e15f1103a0
2 changed files with 30 additions and 22 deletions

View File

@ -168,29 +168,35 @@ template <int cycle> void Chipset::output() {
((current_bitplanes_[3]&1) << 3) | ((current_bitplanes_[3]&1) << 3) |
((current_bitplanes_[4]&1) << 4) ((current_bitplanes_[4]&1) << 4)
]; ];
pixels_[1] = palette_[ current_bitplanes_ >>= is_high_res_;
((current_bitplanes_[0]&2) >> 1) |
((current_bitplanes_[1]&2) << 0) | pixels_[1] = palette_[
((current_bitplanes_[2]&2) << 1) | ((current_bitplanes_[0]&1) << 0) |
((current_bitplanes_[3]&2) << 2) | ((current_bitplanes_[1]&1) << 1) |
((current_bitplanes_[4]&2) << 3) ((current_bitplanes_[2]&1) << 2) |
]; ((current_bitplanes_[3]&1) << 3) |
pixels_[2] = palette_[ ((current_bitplanes_[4]&1) << 4)
((current_bitplanes_[0]&4) >> 2) | ];
((current_bitplanes_[1]&4) >> 1) | current_bitplanes_ >>= 1;
((current_bitplanes_[2]&4) << 0) |
((current_bitplanes_[3]&4) << 1) | pixels_[2] = palette_[
((current_bitplanes_[4]&4) << 2) ((current_bitplanes_[0]&1) << 0) |
]; ((current_bitplanes_[1]&1) << 1) |
pixels_[3] = palette_[ ((current_bitplanes_[2]&1) << 2) |
((current_bitplanes_[0]&8) >> 3) | ((current_bitplanes_[3]&1) << 3) |
((current_bitplanes_[1]&8) >> 2) | ((current_bitplanes_[4]&1) << 4)
((current_bitplanes_[2]&8) >> 1) | ];
((current_bitplanes_[3]&8) << 0) | current_bitplanes_ >>= is_high_res_;
((current_bitplanes_[4]&8) << 1)
]; 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; pixels_ += 4;
} }
} }
@ -593,6 +599,7 @@ void Chipset::perform(const CPU::MC68000::Microcycle &cycle) {
case Write(0x100): case Write(0x100):
bitplanes_.set_control(cycle.value16()); bitplanes_.set_control(cycle.value16());
is_high_res_ = cycle.value16() & 0x8000;
break; break;
case Write(0x104): case Write(0x104):

View File

@ -188,6 +188,7 @@ class Chipset {
// std::array<uint8_t, 912> even_playfield_; // std::array<uint8_t, 912> even_playfield_;
// std::array<uint8_t, 912> odd_playfield_; // std::array<uint8_t, 912> odd_playfield_;
int odd_delay_ = 0, even_delay_ = 0; int odd_delay_ = 0, even_delay_ = 0;
bool is_high_res_ = false;
// MARK: - Copper. // MARK: - Copper.