summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-03-19 12:54:20 -0700
committerMichael Pavone <pavone@retrodev.com>2017-03-19 12:54:20 -0700
commitadb4a2d80e282052b3457ad14a164d12d6cc2cea (patch)
tree11f66bceaca0cbb23750e3f9ec440fce0f9d2b95
parentc8c8169fb851935b416cc58eb5f7670aebc0d5a8 (diff)
Change handling of invalid scroll plane sizes. Fixes title and high score screens in The Incredible Hulk
-rw-r--r--vdp.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/vdp.c b/vdp.c
index 4663e26..51e6726 100644
--- a/vdp.c
+++ b/vdp.c
@@ -998,23 +998,8 @@ static void read_map_scroll(uint16_t column, uint16_t vsram_off, uint32_t line,
}
context->flags &= ~FLAG_WINDOW;
}
- uint16_t vscroll;
- switch(context->regs[REG_SCROLL] & 0x30)
- {
- case 0:
- vscroll = 0xFF;
- break;
- case 0x10:
- vscroll = 0x1FF;
- break;
- case 0x20:
- //TODO: Verify this behavior
- vscroll = 0;
- break;
- case 0x30:
- vscroll = 0x3FF;
- break;
- }
+ //TODO: Verify behavior for 0x20 case
+ uint16_t vscroll = 0xFF | (context->regs[REG_SCROLL] & 0x30) << 4;
if (context->double_res) {
vscroll <<= 1;
vscroll |= 1;
@@ -1057,7 +1042,7 @@ static void read_map_scroll(uint16_t column, uint16_t vsram_off, uint32_t line,
break;
case 0x2:
//TODO: Verify this behavior
- hscroll_mask = 0;
+ hscroll_mask = 0x5F;
v_mul = 0;
break;
case 0x3: