summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2016-05-15 16:22:45 -0700
committerMichael Pavone <pavone@retrodev.com>2016-05-15 16:22:45 -0700
commitb4a36c0ef9d6563b9b247c697c250bc2633f39f1 (patch)
treee2cd20140996b41ab8189019dec7bebd316b7231
parentfa1f11299e32d7886ef05bd9ff453a963069bbaa (diff)
Fix bug in vflip implementation when in double resolution interlace mode
-rw-r--r--vdp.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/vdp.c b/vdp.c
index 1b3007a..2f87edf 100644
--- a/vdp.c
+++ b/vdp.c
@@ -826,20 +826,18 @@ void read_map_scroll_b(uint16_t column, uint32_t line, vdp_context * context)
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;