diff --git a/Machines/Enterprise/Nick.cpp b/Machines/Enterprise/Nick.cpp index 2bcf726ab..0daf02717 100644 --- a/Machines/Enterprise/Nick.cpp +++ b/Machines/Enterprise/Nick.cpp @@ -336,7 +336,7 @@ void Nick::run_for(Cycles duration) { } } - // TODO: logic below is very incomplete. + // Deal with VRES and other address reloading, dependant upon mode. switch(mode_) { default: break; case Mode::CH64: @@ -352,6 +352,14 @@ void Nick::run_for(Cycles duration) { line_data_pointer_[0] = uint16_t(line_parameters_[4] | (line_parameters_[5] << 8)); } break; + + case Mode::Pixel: + case Mode::LPixel: + // If VRES is clear, reload the pixel address. + if(!(line_parameters_[1] & 0x10)) { + line_data_pointer_[0] = uint16_t(line_parameters_[4] | (line_parameters_[5] << 8)); + } + break; } } }