int pattern = mystique->dwgreg.pattern[yoff][xoff];
uint32_t dst;
+ if (!transc || pattern)
switch (mystique->maccess_running & MACCESS_PWIDTH_MASK) {
case MACCESS_PWIDTH_8:
dst = svga->vram[(mystique->dwgreg.ydst_lin + x_l) & mystique->vram_mask];
uint32_t dst;
uint32_t old_dst;
+ if (!transc || pattern)
switch (mystique->maccess_running & MACCESS_PWIDTH_MASK) {
case MACCESS_PWIDTH_8:
dst = old_dst = svga->vram[(mystique->dwgreg.ydst_lin + x_l) & mystique->vram_mask];
mystique->dwgreg.ar[0] += mystique->dwgreg.ar[5];
mystique->dwgreg.ar[3] += mystique->dwgreg.ar[5];
src_addr = mystique->dwgreg.ar[3];
+ break;
} else
src_addr += x_dir;
mystique->dwgreg.ar[0] += mystique->dwgreg.ar[5];
mystique->dwgreg.ar[3] += mystique->dwgreg.ar[5];
src_addr = mystique->dwgreg.ar[3];
+ break;
} else
src_addr += x_dir;
mystique->dwgreg.ar[0] += mystique->dwgreg.ar[5];
mystique->dwgreg.ar[3] += mystique->dwgreg.ar[5];
src_addr = mystique->dwgreg.ar[3];
+ break;
} else
src_addr += x_dir;
mystique->dwgreg.ar[0] += mystique->dwgreg.ar[5];
mystique->dwgreg.ar[3] += mystique->dwgreg.ar[5];
src_addr = mystique->dwgreg.ar[3];
+ break;
} else
src_addr += x_dir;
mystique->pci_regs[addr] = val;
if (addr == 0x30)
mystique->pci_regs[addr] &= 1;
+
if (mystique->pci_regs[0x30] & 0x01) {
uint32_t biosaddr = (mystique->pci_regs[0x32] << 16) | (mystique->pci_regs[0x33] << 24);
mem_mapping_set_addrx(&mystique->bios_rom.mapping, biosaddr, (mystique->type == MGA_G100) ? 0x10000 : 0x8000);
return;
case 0x40:
- mystique->pci_regs[addr] = val & 0x3f;
+ mystique->pci_regs[0x40] = val & 0x3f;
break;
case 0x41:
- mystique->pci_regs[addr] = val;
+ mystique->pci_regs[0x41] = val;
break;
case 0x42:
- mystique->pci_regs[addr] = val & 0x1f;
+ mystique->pci_regs[0x42] = val & 0x1f;
break;
case 0x43:
- mystique->pci_regs[addr] = val;
- //pclog("%08x\n", (mystique->pci_regs[0x40] << 0) | (mystique->pci_regs[0x41] << 8) | (mystique->pci_regs[0x42] << 16) | (mystique->pci_regs[0x43] << 24));
- if (addr == 0x43) {
- if (val & 0x40) {
- if (mystique->pci_regs[0x30] & 0x01) {
- uint32_t biosaddr = (mystique->pci_regs[0x32] << 16) | (mystique->pci_regs[0x33] << 24);
- mem_mapping_set_addrx(&mystique->bios_rom.mapping, biosaddr, (mystique->type == MGA_G100) ? 0x10000 : 0x8000);
- } else
- mem_mapping_disablex(&mystique->bios_rom.mapping);
+ mystique->pci_regs[0x43] = val;
+ if (val & 0x40) {
+ if (mystique->pci_regs[0x30] & 0x01) {
+ uint32_t biosaddr = (mystique->pci_regs[0x32] << 16) | (mystique->pci_regs[0x33] << 24);
+ mem_mapping_set_addrx(&mystique->bios_rom.mapping, biosaddr, (mystique->type == MGA_G100) ? 0x10000 : 0x8000);
} else
- mem_mapping_set_addrx(&mystique->bios_rom.mapping, 0x000c0000, (mystique->type == MGA_G100) ? 0x10000 : 0x8000);
- }
+ mem_mapping_disablex(&mystique->bios_rom.mapping);
+ } else
+ mem_mapping_set_addrx(&mystique->bios_rom.mapping, 0x000c0000, (mystique->type == MGA_G100) ? 0x10000 : 0x8000);
break;
case 0x4c:
mystique_ctrl_write_bx(addr, val, mystique);
break;
- case 0xf8:
- mystique->pci_regs[0xf8] = val & 0x7;
- break;
+ case 0xf8:
+ mystique->pci_regs[0xf8] = val & 0x7;
+ break;
- case 0xf9:
- mystique->pci_regs[0xf9] = val & 0x3;
- break;
+ case 0xf9:
+ mystique->pci_regs[0xf9] = val & 0x3;
+ break;
- case 0xfb:
- mystique->pci_regs[0xfb] = val;
- break;
+ case 0xfb:
+ mystique->pci_regs[0xfb] = val;
+ break;
default:
break;
mystique->svga.conv_16to32 = tvp3026_conv_16to32;
if (mystique->type == MGA_2164W)
mystique->svga.decode_mask = 0xffffff;
+
video_inform(VIDEO_FLAG_TYPE_SPECIAL, (mystique->type == MGA_2164W) ? &timing_matrox_mystique : &timing_matrox_millennium);
svga_init(info, &mystique->svga, mystique, mystique->vram_size << 20,
mystique_recalctimings,