From 972619c1fe0679d8b6eabb31afbe89695ac4a651 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 12 Jan 2025 21:59:22 -0500 Subject: [PATCH 1/2] Correct shift on hcount write. --- Machines/Commodore/Plus4/Video.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Machines/Commodore/Plus4/Video.hpp b/Machines/Commodore/Plus4/Video.hpp index c20646664c..9af51b4728 100644 --- a/Machines/Commodore/Plus4/Video.hpp +++ b/Machines/Commodore/Plus4/Video.hpp @@ -100,8 +100,6 @@ struct Video { video_mode_ = VideoMode::Text; } } - -// printf("Mode: %d %d %d -> %d\n", bitmap_mode_, extended_colour_mode_, multicolour_mode_, int(video_mode_)); }; switch(address) { @@ -169,7 +167,8 @@ struct Video { case 0xff1d: vertical_counter_ = (vertical_counter_ & 0xff00) | value; break; case 0xff1e: // TODO: possibly should be deferred, if falling out of phase? - horizontal_counter_ = (horizontal_counter_ & 0x07) | ((~value << 2) & 0x1f8); + horizontal_counter_ = (horizontal_counter_ & 0x03) | ((~value << 1) & ~0x3); + horizontal_counter_ &= 511; break; case 0xff1f: vertical_sub_count_ = value & 0x7; From 1b1a0f553d87bda5040c461c28cd9d26b6625d53 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 12 Jan 2025 22:07:56 -0500 Subject: [PATCH 2/2] Keep three least bits. --- Machines/Commodore/Plus4/Video.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Machines/Commodore/Plus4/Video.hpp b/Machines/Commodore/Plus4/Video.hpp index 9af51b4728..6c8c509871 100644 --- a/Machines/Commodore/Plus4/Video.hpp +++ b/Machines/Commodore/Plus4/Video.hpp @@ -167,8 +167,8 @@ struct Video { case 0xff1d: vertical_counter_ = (vertical_counter_ & 0xff00) | value; break; case 0xff1e: // TODO: possibly should be deferred, if falling out of phase? - horizontal_counter_ = (horizontal_counter_ & 0x03) | ((~value << 1) & ~0x3); - horizontal_counter_ &= 511; + horizontal_counter_ = (horizontal_counter_ & 0x07) | ((~value << 1) & ~0x07); + horizontal_counter_ &= 0x1ff; break; case 0xff1f: vertical_sub_count_ = value & 0x7;