comparison vdp.c @ 1888:bd60e74fd173

Fix regression in H32 from fine scroll optimization
author Michael Pavone <pavone@retrodev.com>
date Sat, 21 Sep 2019 20:23:53 -0700
parents bb3edb4ec605
children 179a2ac29f27
comparison
equal deleted inserted replaced
1887:bb3edb4ec605 1888:bd60e74fd173
2142 case 2: { 2142 case 2: {
2143 //plane A 2143 //plane A
2144 //TODO: Deal with Window layer 2144 //TODO: Deal with Window layer
2145 int i; 2145 int i;
2146 i = 0; 2146 i = 0;
2147 uint8_t buf_off = context->buf_a_off - (context->hscroll_a & 0xF); 2147 uint8_t buf_off = context->buf_a_off - context->hscroll_a_fine;
2148 //uint8_t *src = context->tmp_buf_a + ((context->buf_a_off + (i ? 0 : (16 - BORDER_LEFT) - (context->hscroll_a & 0xF))) & SCROLL_BUFFER_MASK); 2148 //uint8_t *src = context->tmp_buf_a + ((context->buf_a_off + (i ? 0 : (16 - BORDER_LEFT) - (context->hscroll_a & 0xF))) & SCROLL_BUFFER_MASK);
2149 for (; i < BORDER_RIGHT; buf_off++, i++, dst++) 2149 for (; i < BORDER_RIGHT; buf_off++, i++, dst++)
2150 { 2150 {
2151 *dst = context->tmp_buf_a[buf_off & SCROLL_BUFFER_MASK] & 0x3F; 2151 *dst = context->tmp_buf_a[buf_off & SCROLL_BUFFER_MASK] & 0x3F;
2152 } 2152 }
2982 render_border_garbage(context, address, context->tmp_buf_a, context->buf_a_off+8, context->col_2); 2982 render_border_garbage(context, address, context->tmp_buf_a, context->buf_a_off+8, context->col_2);
2983 address += (context->vcounter & mask) * 4; 2983 address += (context->vcounter & mask) * 4;
2984 context->hscroll_a = context->vdpmem[address] << 8 | context->vdpmem[address+1]; 2984 context->hscroll_a = context->vdpmem[address] << 8 | context->vdpmem[address+1];
2985 context->hscroll_a_fine = context->hscroll_a & 0xF; 2985 context->hscroll_a_fine = context->hscroll_a & 0xF;
2986 context->hscroll_b = context->vdpmem[address+2] << 8 | context->vdpmem[address+3]; 2986 context->hscroll_b = context->vdpmem[address+2] << 8 | context->vdpmem[address+3];
2987 context->hscroll_b_fine = context->hscroll_a & 0xF; 2987 context->hscroll_b_fine = context->hscroll_b & 0xF;
2988 //printf("%d: HScroll A: %d, HScroll B: %d\n", context->vcounter, context->hscroll_a, context->hscroll_b); 2988 //printf("%d: HScroll A: %d, HScroll B: %d\n", context->vcounter, context->hscroll_a, context->hscroll_b);
2989 CHECK_LIMIT //provides "garbage" for border when plane A selected 2989 CHECK_LIMIT //provides "garbage" for border when plane A selected
2990 SPRITE_RENDER_H32(245) 2990 SPRITE_RENDER_H32(245)
2991 SPRITE_RENDER_H32(246) 2991 SPRITE_RENDER_H32(246)
2992 SPRITE_RENDER_H32(247) //provides "garbage" for border when plane B selected 2992 SPRITE_RENDER_H32(247) //provides "garbage" for border when plane B selected