Mercurial > repos > blastem
comparison vdp.c @ 1290:aa1a8eb5bb2b
Change handling of invalid scroll plane sizes. Fixes title and high score screens in The Incredible Hulk
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 19 Mar 2017 12:54:20 -0700 |
parents | 6ad59a62e656 |
children | da1ffc4026c4 |
comparison
equal
deleted
inserted
replaced
1289:6ad59a62e656 | 1290:aa1a8eb5bb2b |
---|---|
996 context->flags |= FLAG_WINDOW; | 996 context->flags |= FLAG_WINDOW; |
997 return; | 997 return; |
998 } | 998 } |
999 context->flags &= ~FLAG_WINDOW; | 999 context->flags &= ~FLAG_WINDOW; |
1000 } | 1000 } |
1001 uint16_t vscroll; | 1001 //TODO: Verify behavior for 0x20 case |
1002 switch(context->regs[REG_SCROLL] & 0x30) | 1002 uint16_t vscroll = 0xFF | (context->regs[REG_SCROLL] & 0x30) << 4; |
1003 { | |
1004 case 0: | |
1005 vscroll = 0xFF; | |
1006 break; | |
1007 case 0x10: | |
1008 vscroll = 0x1FF; | |
1009 break; | |
1010 case 0x20: | |
1011 //TODO: Verify this behavior | |
1012 vscroll = 0; | |
1013 break; | |
1014 case 0x30: | |
1015 vscroll = 0x3FF; | |
1016 break; | |
1017 } | |
1018 if (context->double_res) { | 1003 if (context->double_res) { |
1019 vscroll <<= 1; | 1004 vscroll <<= 1; |
1020 vscroll |= 1; | 1005 vscroll |= 1; |
1021 } | 1006 } |
1022 //TODO: Further research on vscroll latch behavior and the "first column bug" | 1007 //TODO: Further research on vscroll latch behavior and the "first column bug" |
1055 hscroll_mask = 0x3F; | 1040 hscroll_mask = 0x3F; |
1056 v_mul = 128; | 1041 v_mul = 128; |
1057 break; | 1042 break; |
1058 case 0x2: | 1043 case 0x2: |
1059 //TODO: Verify this behavior | 1044 //TODO: Verify this behavior |
1060 hscroll_mask = 0; | 1045 hscroll_mask = 0x5F; |
1061 v_mul = 0; | 1046 v_mul = 0; |
1062 break; | 1047 break; |
1063 case 0x3: | 1048 case 0x3: |
1064 hscroll_mask = 0x7F; | 1049 hscroll_mask = 0x7F; |
1065 v_mul = 256; | 1050 v_mul = 256; |