Mercurial > repos > blastem
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 |