From fe0cdc8d69f7566b5978d65f7f9f96392349fe7e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 2 Dec 2017 16:10:29 -0500 Subject: [PATCH] Corrects colour fetching in TMS Graphics II to be a function of row. --- Components/9918/9918.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Components/9918/9918.cpp b/Components/9918/9918.cpp index ec9895f89..353aed738 100644 --- a/Components/9918/9918.cpp +++ b/Components/9918/9918.cpp @@ -134,11 +134,9 @@ void TMS9918::run_for(const HalfCycles cycles) { int row_base = pattern_name_address_; int pattern_base = pattern_generator_table_address_; int colour_base = colour_table_address_; - int colour_shift = 3; if(screen_mode_ == 1) { pattern_base &= 0x2000 | ((row_ & 0xc0) << 5); colour_base &= 0x2000 | ((row_ & 0xc0) << 5); - colour_shift = 0; } row_base += (row_ << 2)&~31; @@ -151,7 +149,11 @@ void TMS9918::run_for(const HalfCycles cycles) { break; case 1: break; // TODO: sprites / CPU access. case 2: - colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ >> colour_shift)]; + if(screen_mode_ != 1) { + colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ >> 3)]; + } else { + colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ << 3) + (row_ & 7)]; + } break; case 3: pattern_buffer_[character_column] = ram_[pattern_base + (pattern_name_ << 3) + (row_ & 7)];