From cd36f3f0968bdba6c6b0fd26dada14617644e18f Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 11 Jan 2025 23:19:01 -0500 Subject: [PATCH] Restrict counter sizes; invert written horizontal counter. --- Machines/Commodore/Plus4/Video.hpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Machines/Commodore/Plus4/Video.hpp b/Machines/Commodore/Plus4/Video.hpp index 87921f412..275580b93 100644 --- a/Machines/Commodore/Plus4/Video.hpp +++ b/Machines/Commodore/Plus4/Video.hpp @@ -167,7 +167,10 @@ public: case 0xff1c: vertical_counter_ = (vertical_counter_ & 0x00ff) | ((value & 3) << 8); break; case 0xff1d: vertical_counter_ = (vertical_counter_ & 0xff00) | value; break; - case 0xff1e: horizontal_counter_ = (horizontal_counter_ & 0x07) | ((value<< 2) & 0x1f8); break; + case 0xff1e: + // TODO: possibly should be deferred, if falling out of phase? + horizontal_counter_ = (horizontal_counter_ & 0x07) | ((~value << 2) & 0x1f8); + break; case 0xff1f: vertical_sub_count_ = value & 0x7; flash_count_ = (flash_count_ & 0x10) | ((value >> 3) & 0xf); @@ -414,10 +417,10 @@ public: next_pixels_.write(pixels); shifter_.advance(); - ++video_counter_; + video_counter_ = (video_counter_ + 1) & 0x3ff; } if(increment_character_position_ && character_fetch_) { - ++character_position_; + character_position_ = (character_position_ + 1) & 0x3ff; } if(enable_display_) { switch(x_scroll_) {