diff --git a/Components/9918/Implementation/9918.cpp b/Components/9918/Implementation/9918.cpp index 6b74bf471..52a71a86c 100644 --- a/Components/9918/Implementation/9918.cpp +++ b/Components/9918/Implementation/9918.cpp @@ -419,6 +419,11 @@ void TMS9918::run_for(const HalfCycles cycles) { break; } + if constexpr (is_yamaha_vdp(personality)) { + this->fetch_line_buffer_->first_pixel_output_column += Storage::adjustment_[0]; + this->fetch_line_buffer_->next_border_column += Storage::adjustment_[0]; + } + this->fetch_line_buffer_->vertical_state = this->screen_mode_ == ScreenMode::Blank ? VerticalState::Blank : @@ -874,9 +879,8 @@ void Base::commit_register(int reg, uint8_t value) { break; case 18: - if(value) { - LOG("TODO: Yamaha position adjustment; " << PADHEX(2) << +value); - } + Storage::adjustment_[0] = (8 - ((value & 15) ^ 8)) * 4; + Storage::adjustment_[1] = 8 - ((value >> 4) ^ 8); // b0-b3: horizontal adjustment // b4-b7: vertical adjustment break; diff --git a/Components/9918/Implementation/Storage.hpp b/Components/9918/Implementation/Storage.hpp index 85f272c4a..53382e29e 100644 --- a/Components/9918/Implementation/Storage.hpp +++ b/Components/9918/Implementation/Storage.hpp @@ -38,6 +38,8 @@ template struct Storage palette_{}; std::array background_palette_{}; bool solid_background_ = true;