# HG changeset patch # User Michael Pavone # Date 1569122633 25200 # Node ID bd60e74fd173283fe8424bd191f26a59f34c1d8a # Parent bb3edb4ec605c36a2b6fddc099c90d2ead6d2da8 Fix regression in H32 from fine scroll optimization diff -r bb3edb4ec605 -r bd60e74fd173 vdp.c --- a/vdp.c Sat Sep 21 20:20:03 2019 -0700 +++ b/vdp.c Sat Sep 21 20:23:53 2019 -0700 @@ -2144,7 +2144,7 @@ //TODO: Deal with Window layer int i; i = 0; - uint8_t buf_off = context->buf_a_off - (context->hscroll_a & 0xF); + uint8_t buf_off = context->buf_a_off - context->hscroll_a_fine; //uint8_t *src = context->tmp_buf_a + ((context->buf_a_off + (i ? 0 : (16 - BORDER_LEFT) - (context->hscroll_a & 0xF))) & SCROLL_BUFFER_MASK); for (; i < BORDER_RIGHT; buf_off++, i++, dst++) { @@ -2984,7 +2984,7 @@ context->hscroll_a = context->vdpmem[address] << 8 | context->vdpmem[address+1]; context->hscroll_a_fine = context->hscroll_a & 0xF; context->hscroll_b = context->vdpmem[address+2] << 8 | context->vdpmem[address+3]; - context->hscroll_b_fine = context->hscroll_a & 0xF; + context->hscroll_b_fine = context->hscroll_b & 0xF; //printf("%d: HScroll A: %d, HScroll B: %d\n", context->vcounter, context->hscroll_a, context->hscroll_b); CHECK_LIMIT //provides "garbage" for border when plane A selected SPRITE_RENDER_H32(245)