diff --git a/Components/9918/9918.cpp b/Components/9918/9918.cpp index d4cff3c07..7d41b5af6 100644 --- a/Components/9918/9918.cpp +++ b/Components/9918/9918.cpp @@ -605,7 +605,6 @@ HalfCycles Base::half_cycles_before_internal_cycles(int internal_cycles) { return HalfCycles(((internal_cycles << 2) - cycles_error_) / 3); } - HalfCycles TMS9918::get_time_until_interrupt() { if(!generate_interrupts_ && !enable_line_interrupts_) return HalfCycles(-1); if(get_interrupt_line()) return HalfCycles(0); diff --git a/Components/9918/Implementation/9918Base.hpp b/Components/9918/Implementation/9918Base.hpp index c3a1573aa..c0c310bac 100644 --- a/Components/9918/Implementation/9918Base.hpp +++ b/Components/9918/Implementation/9918Base.hpp @@ -554,7 +554,7 @@ class Base { LineBuffer &line_buffer = line_buffers_[write_pointer_.row]; LineBuffer &sprite_selection_buffer = line_buffers_[(write_pointer_.row + 1) % mode_timing_.total_lines]; - const size_t row_base = pattern_name_address_ & (static_cast((write_pointer_.row << 2)&~31) | 0x3c00); + const size_t row_base = pattern_name_address_ & (size_t((write_pointer_.row << 2)&~31) | 0x3c00); size_t pattern_base = pattern_generator_table_address_; size_t colour_base = colour_table_address_; @@ -562,17 +562,20 @@ class Base { if(screen_mode_ == ScreenMode::Graphics) { // If this is high resolution mode, allow the row number to affect the pattern and colour addresses. - pattern_base &= static_cast(0x2000 | ((write_pointer_.row & 0xc0) << 5)); - colour_base &= static_cast(0x2000 | ((write_pointer_.row & 0xc0) << 5)); + pattern_base &= size_t(0x2000 | ((write_pointer_.row & 0xc0) << 5)); + colour_base &= size_t(0x2000 | ((write_pointer_.row & 0xc0) << 5)); - colour_base += static_cast(write_pointer_.row & 7); + colour_base += size_t(write_pointer_.row & 7); colour_name_shift = 0; + } else { + colour_base &= size_t(0xffc0 | (write_pointer_.row & 7)); + pattern_base &= size_t(0x3800); } if(screen_mode_ == ScreenMode::MultiColour) { - pattern_base += static_cast((write_pointer_.row >> 2) & 7); + pattern_base += size_t((write_pointer_.row >> 2) & 7); } else { - pattern_base += static_cast(write_pointer_.row & 7); + pattern_base += size_t(write_pointer_.row & 7); } switch(start) {