# HG changeset patch # User Michael Pavone # Date 1463354565 25200 # Node ID 679137a0e78ef7ba2ee7a15b6d6f198e3cc8f1a9 # Parent 219de1d64aa1f93d8ab4f689d6bca4d6776ab9e5 Fix bug in vflip implementation when in double resolution interlace mode diff -r 219de1d64aa1 -r 679137a0e78e vdp.c --- a/vdp.c Sun May 15 12:10:49 2016 -0700 +++ b/vdp.c Sun May 15 16:22:45 2016 -0700 @@ -826,20 +826,18 @@ void render_map(uint16_t col, uint8_t * tmp_buf, uint8_t offset, vdp_context * context) { uint16_t address; - uint8_t shift, add; + uint16_t vflip_base; if (context->double_res) { address = ((col & 0x3FF) << 6); - shift = 1; - add = context->framebuf != context->oddbuf ? 1 : 0; + vflip_base = 60; } else { address = ((col & 0x7FF) << 5); - shift = 0; - add = 0; + vflip_base = 28; } if (col & MAP_BIT_V_FLIP) { - address += 28 - 4 * context->v_offset/*((context->v_offset << shift) + add)*/; + address += vflip_base - 4 * context->v_offset; } else { - address += 4 * context->v_offset/*((context->v_offset << shift) + add)*/; + address += 4 * context->v_offset; } uint16_t pal_priority = (col >> 9) & 0x70; int32_t dir;