trunk/src/emu/video/pc_vga.c
r18110 | r18111 | |
2755 | 2755 | case 0x4f: |
2756 | 2756 | res = s3.cursor_pattern_y; |
2757 | 2757 | break; |
| 2758 | case 0x51: |
| 2759 | res = (vga.crtc.start_addr & 0x0c0000) >> 18; |
| 2760 | break; |
2758 | 2761 | case 0x55: |
2759 | 2762 | res = s3.extended_dac_ctrl; |
2760 | 2763 | break; |
2761 | 2764 | case 0x67: |
2762 | 2765 | res = s3.ext_misc_ctrl_2; |
2763 | 2766 | break; |
| 2767 | case 0x69: |
| 2768 | res = vga.crtc.start_addr >> 16; |
| 2769 | break; |
2764 | 2770 | case 0x6a: |
2765 | 2771 | res = svga.bank_r & 0x7f; |
2766 | 2772 | break; |
r18110 | r18111 | |
2964 | 2970 | case 0x51: |
2965 | 2971 | vga.crtc.start_addr &= ~0xc0000; |
2966 | 2972 | vga.crtc.start_addr |= ((data & 0x3) << 18); |
| 2973 | svga.bank_w = (svga.bank_w & 0xcf) | ((data & 0x0c) << 2); |
| 2974 | svga.bank_r = svga.bank_r; |
| 2975 | s3_define_video_mode(); |
2967 | 2976 | break; |
2968 | 2977 | case 0x53: |
2969 | 2978 | s3.cr53 = data; |
r18110 | r18111 | |
2996 | 3005 | s3.ext_misc_ctrl_2 = data; |
2997 | 3006 | s3_define_video_mode(); |
2998 | 3007 | //printf("%02x X\n",data); |
2999 | | //debugger_break(machine); |
3000 | 3008 | break; |
| 3009 | case 0x69: |
| 3010 | vga.crtc.start_addr &= ~0x1f0000; |
| 3011 | vga.crtc.start_addr |= ((data & 0x1f) << 16); |
| 3012 | s3_define_video_mode(); |
| 3013 | break; |
3001 | 3014 | case 0x6a: |
3002 | | svga.bank_w = data & 0xf; |
| 3015 | svga.bank_w = data & 0x3f; |
3003 | 3016 | svga.bank_r = svga.bank_w; |
3004 | 3017 | if(data & 0x60) |
3005 | 3018 | fatalerror("TODO: s3 bank selects above 1M\n"); |