diff --git a/Components/9918/Implementation/9918.cpp b/Components/9918/Implementation/9918.cpp index b3f2643b4..c46e954de 100644 --- a/Components/9918/Implementation/9918.cpp +++ b/Components/9918/Implementation/9918.cpp @@ -321,7 +321,11 @@ void TMS9918::run_for(const HalfCycles cycles) { this->mode_timing_.maximum_visible_sprites = 4; switch(this->screen_mode_) { case ScreenMode::Text: - next_line_buffer.fetch_mode = FetchMode::Text; + if constexpr (is_yamaha_vdp(personality)) { + next_line_buffer.fetch_mode = FetchMode::Yamaha; + } else { + next_line_buffer.fetch_mode = FetchMode::Text; + } next_line_buffer.first_pixel_output_column = Timing::FirstTextCycle; next_line_buffer.next_border_column = Timing::LastTextCycle; next_line_buffer.pixel_count = 240; diff --git a/Components/9918/Implementation/Draw.hpp b/Components/9918/Implementation/Draw.hpp index 014f3b6a5..c8d0cd25a 100644 --- a/Components/9918/Implementation/Draw.hpp +++ b/Components/9918/Implementation/Draw.hpp @@ -323,6 +323,9 @@ void Base::draw_yamaha(int start, int end) { #define Dispatch(x) case ScreenMode::x: draw_yamaha(line_buffer, start, end); break; if constexpr (is_yamaha_vdp(personality)) { switch(line_buffer.screen_mode) { + // These modes look the same as on the TMS. + case ScreenMode::Text: draw_tms_text(start >> 2, end >> 2); break; + Dispatch(YamahaGraphics3); Dispatch(YamahaGraphics4); Dispatch(YamahaGraphics5);