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;