Video changes part 2
1. Added the Diamond Stealth 64 Video VRAM 968-based card. 2. Removed the useless VLB-based Phoenix 868 and 968 cards. 3. The Diamond Stealth 64 Video VRAM specific drivers apparently use 0x83ca-0x83cb as aliases of the RAMDAC ports 0x83c6-0x83c7 (New MMIO mode). This makes the hardware cursor visible in those drivers on win3.1 using the IBM RGB RAMDAC. 4. A few more logs and sanity checks around LFB access and MMIO as well.
This commit is contained in:
@@ -507,15 +507,15 @@ extern const device_t s3_phoenix_vision864_pci_device;
|
||||
extern const device_t s3_phoenix_vision864_vlb_device;
|
||||
extern const device_t s3_9fx_531_pci_device;
|
||||
extern const device_t s3_phoenix_vision868_pci_device;
|
||||
extern const device_t s3_phoenix_vision868_vlb_device;
|
||||
extern const device_t s3_diamond_stealth64_pci_device;
|
||||
extern const device_t s3_diamond_stealth64_vlb_device;
|
||||
extern const device_t s3_diamond_stealth64_964_pci_device;
|
||||
extern const device_t s3_diamond_stealth64_964_vlb_device;
|
||||
extern const device_t s3_diamond_stealth64_968_pci_device;
|
||||
extern const device_t s3_diamond_stealth64_968_vlb_device;
|
||||
extern const device_t s3_mirovideo_40sv_ergo_968_pci_device;
|
||||
extern const device_t s3_9fx_771_pci_device;
|
||||
extern const device_t s3_phoenix_vision968_pci_device;
|
||||
extern const device_t s3_phoenix_vision968_vlb_device;
|
||||
extern const device_t s3_spea_mercury_p64v_pci_device;
|
||||
extern const device_t s3_elsa_winner2000_pro_x_964_pci_device;
|
||||
extern const device_t s3_elsa_winner2000_pro_x_pci_device;
|
||||
|
@@ -75,6 +75,7 @@
|
||||
#define ROM_SPEA_MERCURY_P64V "roms/video/s3/S3_968PCI_TVP3026_SPEAMecuryP64V_ver1.01.BIN"
|
||||
#define ROM_NUMBER9_9FX_771 "roms/video/s3/no9motionfx771.BIN"
|
||||
#define ROM_PHOENIX_VISION968 "roms/video/s3/1-DSV3968P.BIN"
|
||||
#define ROM_DIAMOND_STEALTH64_968 "roms/video/s3/vv_303.rom"
|
||||
|
||||
enum {
|
||||
S3_NUMBER9_9FX,
|
||||
@@ -115,7 +116,8 @@ enum {
|
||||
S3_NUMBER9_9FX_531,
|
||||
S3_NUMBER9_9FX_771,
|
||||
S3_SPEA_MERCURY_LITE_PCI,
|
||||
S3_86C805_ONBOARD
|
||||
S3_86C805_ONBOARD,
|
||||
S3_DIAMOND_STEALTH64_968
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -2770,13 +2772,15 @@ s3_out(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0x3C7:
|
||||
case 0x3C8:
|
||||
case 0x3C9:
|
||||
case 0x3CA: /*0x3c6 alias*/
|
||||
case 0x3CB: /*0x3c7 alias*/
|
||||
rs2 = (svga->crtc[0x55] & 0x01) || !!(svga->crtc[0x43] & 2);
|
||||
if (s3->chip >= S3_TRIO32)
|
||||
svga_out(addr, val, svga);
|
||||
else if ((s3->chip == S3_VISION964 && s3->card_type != S3_ELSAWIN2KPROX_964) || (s3->chip == S3_86C928)) {
|
||||
rs3 = !!(svga->crtc[0x55] & 0x02);
|
||||
bt48x_ramdac_out(addr, rs2, rs3, val, svga->ramdac, svga);
|
||||
} else if ((s3->chip == S3_VISION964 && s3->card_type == S3_ELSAWIN2KPROX_964) || (s3->chip == S3_VISION968 && (s3->card_type == S3_ELSAWIN2KPROX || s3->card_type == S3_PHOENIX_VISION968 || s3->card_type == S3_NUMBER9_9FX_771)))
|
||||
} else if ((s3->chip == S3_VISION964 && s3->card_type == S3_ELSAWIN2KPROX_964) || (s3->chip == S3_VISION968 && (s3->card_type == S3_DIAMOND_STEALTH64_968 || s3->card_type == S3_ELSAWIN2KPROX || s3->card_type == S3_PHOENIX_VISION968 || s3->card_type == S3_NUMBER9_9FX_771)))
|
||||
ibm_rgb528_ramdac_out(addr, rs2, val, svga->ramdac, svga);
|
||||
else if (s3->chip == S3_VISION968 && (s3->card_type == S3_SPEA_MERCURY_P64V || s3->card_type == S3_MIROVIDEO40SV_ERGO_968)) {
|
||||
rs3 = !!(svga->crtc[0x55] & 0x02);
|
||||
@@ -2957,10 +2961,12 @@ s3_out(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0x58:
|
||||
case 0x59:
|
||||
case 0x5a:
|
||||
s3_log("[%04X:%08X]: Write CRTC%02x=%02x.\n", CS, cpu_state.pc, svga->crtcreg, svga->crtc[svga->crtcreg]);
|
||||
s3_updatemapping(s3);
|
||||
break;
|
||||
|
||||
case 0x55:
|
||||
s3_log("[%04X:%08X]: Write CRTC%02x=%02x.\n", CS, cpu_state.pc, svga->crtcreg, svga->crtc[svga->crtcreg]);
|
||||
if (s3->chip == S3_86C928) {
|
||||
if (val & 0x28) {
|
||||
svga->hwcursor_draw = NULL;
|
||||
@@ -3093,6 +3099,8 @@ s3_in(uint16_t addr, void *priv)
|
||||
case 0x3c7:
|
||||
case 0x3c8:
|
||||
case 0x3c9:
|
||||
case 0x3ca: /*0x3c6 alias*/
|
||||
case 0x3cb: /*0x3c7 alias*/
|
||||
rs2 = (svga->crtc[0x55] & 0x01) || !!(svga->crtc[0x43] & 2);
|
||||
if (s3->chip >= S3_TRIO32)
|
||||
return svga_in(addr, svga);
|
||||
@@ -3103,7 +3111,7 @@ s3_in(uint16_t addr, void *priv)
|
||||
rs3 = !!(svga->crtc[0x55] & 0x02);
|
||||
temp = bt48x_ramdac_in(addr, rs2, rs3, svga->ramdac, svga);
|
||||
return temp;
|
||||
} else if ((s3->chip == S3_VISION964 && s3->card_type == S3_ELSAWIN2KPROX_964) || (s3->chip == S3_VISION968 && (s3->card_type == S3_ELSAWIN2KPROX || s3->card_type == S3_PHOENIX_VISION968 || s3->card_type == S3_NUMBER9_9FX_771)))
|
||||
} else if ((s3->chip == S3_VISION964 && s3->card_type == S3_ELSAWIN2KPROX_964) || (s3->chip == S3_VISION968 && (s3->card_type == S3_DIAMOND_STEALTH64_968 || s3->card_type == S3_ELSAWIN2KPROX || s3->card_type == S3_PHOENIX_VISION968 || s3->card_type == S3_NUMBER9_9FX_771)))
|
||||
return ibm_rgb528_ramdac_in(addr, rs2, svga->ramdac, svga);
|
||||
else if (s3->chip == S3_VISION968 && (s3->card_type == S3_SPEA_MERCURY_P64V || s3->card_type == S3_MIROVIDEO40SV_ERGO_968)) {
|
||||
rs3 = !!(svga->crtc[0x55] & 0x02);
|
||||
@@ -3138,6 +3146,7 @@ s3_in(uint16_t addr, void *priv)
|
||||
}
|
||||
break;
|
||||
case 0x30:
|
||||
s3_log("[%04X:%08X]: Read CRTC30=%02x.\n", CS, cpu_state.pc, s3->id);
|
||||
return s3->id; /*Chip ID*/
|
||||
case 0x31:
|
||||
return (svga->crtc[0x31] & 0xcf) | ((s3->ma_ext & 3) << 4);
|
||||
@@ -3168,6 +3177,7 @@ s3_in(uint16_t addr, void *priv)
|
||||
/* Phoenix S3 video BIOS'es seem to expect CRTC registers 6B and 6C
|
||||
to be mirrors of 59 and 5A. */
|
||||
case 0x6b:
|
||||
s3_log("[%04X:%08X]: Read CRTC6b=%02x.\n", CS, cpu_state.pc, svga->crtc[0x6b]);
|
||||
if (s3->chip != S3_TRIO64V2) {
|
||||
if (svga->crtc[0x53] & 0x08) {
|
||||
return (s3->chip == S3_TRIO64V) ? (svga->crtc[0x59] & 0xfc) : (svga->crtc[0x59] & 0xfe);
|
||||
@@ -3178,6 +3188,7 @@ s3_in(uint16_t addr, void *priv)
|
||||
return svga->crtc[0x6b];
|
||||
break;
|
||||
case 0x6c:
|
||||
s3_log("[%04X:%08X]: Read CRTC6c=%02x.\n", CS, cpu_state.pc, svga->crtc[0x6b]);
|
||||
if (s3->chip != S3_TRIO64V2) {
|
||||
if (svga->crtc[0x53] & 0x08) {
|
||||
return 0x00;
|
||||
@@ -3190,6 +3201,7 @@ s3_in(uint16_t addr, void *priv)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
s3_log("[%04X:%08X]: Read CRTC%02x=%02x.\n", CS, cpu_state.pc, svga->crtcreg, svga->crtc[svga->crtcreg]);
|
||||
return svga->crtc[svga->crtcreg];
|
||||
|
||||
default:
|
||||
@@ -3458,6 +3470,7 @@ s3_recalctimings(svga_t *svga)
|
||||
if (svga->hdisp == 832)
|
||||
svga->hdisp -= 32;
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
@@ -3640,6 +3653,7 @@ s3_recalctimings(svga_t *svga)
|
||||
if (svga->hdisp == 832)
|
||||
svga->hdisp -= 32;
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
@@ -3827,6 +3841,7 @@ s3_recalctimings(svga_t *svga)
|
||||
if (svga->hdisp == 832)
|
||||
svga->hdisp -= 32;
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
@@ -4039,6 +4054,7 @@ s3_recalctimings(svga_t *svga)
|
||||
if (svga->hdisp == 832)
|
||||
svga->hdisp -= 32;
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
@@ -4369,6 +4385,7 @@ s3_updatemapping(s3_t *s3)
|
||||
s3->linear_base &= 0x00ffffff;
|
||||
}
|
||||
|
||||
s3_log("LinearBase=%x, crtc58bits=%x.\n", s3->linear_base, svga->crtc[0x58] & 0x13);
|
||||
if ((svga->crtc[0x58] & 0x10) || (s3->accel.advfunc_cntl & 0x10)) {
|
||||
/*Linear framebuffer*/
|
||||
mem_mapping_disable(&svga->mapping);
|
||||
@@ -4414,7 +4431,11 @@ s3_updatemapping(s3_t *s3)
|
||||
else if ((s3->chip == S3_VISION968) || (s3->chip == S3_VISION868))
|
||||
s3->linear_base &= 0xfe000000;
|
||||
|
||||
mem_mapping_set_addr(&s3->linear_mapping, s3->linear_base, s3->linear_size);
|
||||
s3_log("LinearBase update=%x, size=%x.\n", s3->linear_base, s3->linear_size);
|
||||
if (s3->linear_base)
|
||||
mem_mapping_set_addr(&s3->linear_mapping, s3->linear_base, s3->linear_size);
|
||||
else
|
||||
mem_mapping_disable(&s3->linear_mapping);
|
||||
}
|
||||
svga->fb_only = 1;
|
||||
} else {
|
||||
@@ -4437,8 +4458,12 @@ s3_updatemapping(s3_t *s3)
|
||||
}
|
||||
|
||||
/* New MMIO. */
|
||||
if (svga->crtc[0x53] & 0x08)
|
||||
mem_mapping_set_addr(&s3->new_mmio_mapping, s3->linear_base + 0x1000000, 0x20000);
|
||||
if (svga->crtc[0x53] & 0x08) {
|
||||
if (s3->linear_base)
|
||||
mem_mapping_set_addr(&s3->new_mmio_mapping, s3->linear_base + 0x1000000, 0x20000);
|
||||
else
|
||||
mem_mapping_disable(&s3->new_mmio_mapping);
|
||||
}
|
||||
else
|
||||
mem_mapping_disable(&s3->new_mmio_mapping);
|
||||
}
|
||||
@@ -9178,11 +9203,13 @@ s3_pci_read(UNUSED(int func), int addr, void *priv)
|
||||
return 0x00; /*Supports VGA interface*/
|
||||
else
|
||||
return 0x01;
|
||||
break;
|
||||
case 0x0b:
|
||||
if (s3->chip >= S3_TRIO32 || s3->chip == S3_VISION968 || s3->chip == S3_VISION868)
|
||||
return 0x03;
|
||||
else
|
||||
return 0x00;
|
||||
break;
|
||||
|
||||
case 0x0d:
|
||||
return (s3->chip == S3_TRIO64V2) ? (s3->pci_regs[0x0d] & 0xf8) : 0x00;
|
||||
@@ -9461,6 +9488,7 @@ s3_reset(void *priv)
|
||||
svga->crtc[0x5a] = 0x0a;
|
||||
break;
|
||||
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_ELSAWIN2KPROX:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
case S3_MIROVIDEO40SV_ERGO_968:
|
||||
@@ -9639,10 +9667,7 @@ s3_init(const device_t *info)
|
||||
case S3_PHOENIX_VISION868:
|
||||
bios_fn = ROM_PHOENIX_VISION868;
|
||||
chip = S3_VISION868;
|
||||
if (info->flags & DEVICE_PCI)
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision868_pci);
|
||||
else
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision868_vlb);
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision868_pci);
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_964:
|
||||
bios_fn = ROM_DIAMOND_STEALTH64_964;
|
||||
@@ -9662,6 +9687,14 @@ s3_init(const device_t *info)
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision964_vlb);
|
||||
}
|
||||
break;
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
bios_fn = ROM_DIAMOND_STEALTH64_968;
|
||||
chip = S3_VISION968;
|
||||
if (info->flags & DEVICE_PCI)
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision968_pci);
|
||||
else
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision968_vlb);
|
||||
break;
|
||||
case S3_MIROVIDEO40SV_ERGO_968:
|
||||
bios_fn = ROM_MIROVIDEO40SV_ERGO_968_PCI;
|
||||
chip = S3_VISION968;
|
||||
@@ -9675,10 +9708,7 @@ s3_init(const device_t *info)
|
||||
case S3_PHOENIX_VISION968:
|
||||
bios_fn = ROM_PHOENIX_VISION968;
|
||||
chip = S3_VISION968;
|
||||
if (info->flags & DEVICE_PCI)
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision968_pci);
|
||||
else
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision968_vlb);
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_vision968_pci);
|
||||
break;
|
||||
case S3_ELSAWIN2KPROX_964:
|
||||
bios_fn = ROM_ELSAWIN2KPROX_964;
|
||||
@@ -9843,7 +9873,7 @@ s3_init(const device_t *info)
|
||||
mem_mapping_disable(&s3->mmio_mapping);
|
||||
mem_mapping_disable(&s3->new_mmio_mapping);
|
||||
|
||||
if (chip == S3_VISION964 || chip == S3_VISION968)
|
||||
if ((chip == S3_VISION964) || (chip == S3_VISION968))
|
||||
svga_init(info, &s3->svga, s3, vram_size,
|
||||
s3_recalctimings,
|
||||
s3_in, s3_out,
|
||||
@@ -9881,16 +9911,14 @@ s3_init(const device_t *info)
|
||||
|
||||
case S3_VISION968:
|
||||
switch (info->local) {
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_ELSAWIN2KPROX:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
svga->dac_hwcursor_draw = ibm_rgb528_hwcursor_draw;
|
||||
break;
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
case S3_MIROVIDEO40SV_ERGO_968:
|
||||
svga->dac_hwcursor_draw = tvp3026_hwcursor_draw;
|
||||
break;
|
||||
default:
|
||||
svga->dac_hwcursor_draw = tvp3026_hwcursor_draw;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -10125,6 +10153,7 @@ s3_init(const device_t *info)
|
||||
}
|
||||
break;
|
||||
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_ELSAWIN2KPROX:
|
||||
case S3_SPEA_MERCURY_P64V:
|
||||
case S3_MIROVIDEO40SV_ERGO_968:
|
||||
@@ -10132,8 +10161,9 @@ s3_init(const device_t *info)
|
||||
case S3_PHOENIX_VISION968:
|
||||
svga->decode_mask = (8 << 20) - 1;
|
||||
s3->id = 0xe1; /*Vision968*/
|
||||
s3->id_ext = s3->id_ext_pci = 0xf0;
|
||||
s3->packed_mmio = 1;
|
||||
s3->id_ext = 0xf0;
|
||||
s3->id_ext_pci = s3->id_ext;
|
||||
s3->packed_mmio = 1;
|
||||
if (s3->pci) {
|
||||
svga->crtc[0x53] = 0x18;
|
||||
svga->crtc[0x58] = 0x10;
|
||||
@@ -10147,6 +10177,7 @@ s3_init(const device_t *info)
|
||||
}
|
||||
|
||||
switch (info->local) {
|
||||
case S3_DIAMOND_STEALTH64_968:
|
||||
case S3_ELSAWIN2KPROX:
|
||||
case S3_PHOENIX_VISION968:
|
||||
case S3_NUMBER9_9FX_771:
|
||||
@@ -10376,6 +10407,12 @@ s3_diamond_stealth64_964_available(void)
|
||||
return rom_present(ROM_DIAMOND_STEALTH64_964);
|
||||
}
|
||||
|
||||
static int
|
||||
s3_diamond_stealth64_968_available(void)
|
||||
{
|
||||
return rom_present(ROM_DIAMOND_STEALTH64_968);
|
||||
}
|
||||
|
||||
static int
|
||||
s3_mirovideo_40sv_ergo_968_pci_available(void)
|
||||
{
|
||||
@@ -10593,6 +10630,20 @@ static const device_config_t s3_968_config[] = {
|
||||
{ .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t s3_standard_config2[] = {
|
||||
{ .name = "memory",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 4,
|
||||
.selection = {
|
||||
{ .description = "2 MB",
|
||||
.value = 2 },
|
||||
{ .description = "4 MB",
|
||||
.value = 4 },
|
||||
{ .description = "" } } },
|
||||
{ .type = CONFIG_END }
|
||||
};
|
||||
|
||||
const device_t s3_orchid_86c911_isa_device = {
|
||||
.name = "S3 86c911 ISA (Orchid Fahrenheit 1280)",
|
||||
.internal_name = "orchid_s3_911",
|
||||
@@ -10873,6 +10924,34 @@ const device_t s3_diamond_stealth64_964_pci_device = {
|
||||
.config = s3_standard_config
|
||||
};
|
||||
|
||||
const device_t s3_diamond_stealth64_968_vlb_device = {
|
||||
.name = "S3 Vision968 VLB (Diamond Stealth64 Video VRAM)",
|
||||
.internal_name = "stealth64vv_vlb",
|
||||
.flags = DEVICE_VLB,
|
||||
.local = S3_DIAMOND_STEALTH64_968,
|
||||
.init = s3_init,
|
||||
.close = s3_close,
|
||||
.reset = s3_reset,
|
||||
{ .available = s3_diamond_stealth64_968_available },
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_standard_config2
|
||||
};
|
||||
|
||||
const device_t s3_diamond_stealth64_968_pci_device = {
|
||||
.name = "S3 Vision968 PCI (Diamond Stealth64 Video VRAM)",
|
||||
.internal_name = "stealth64vv_pci",
|
||||
.flags = DEVICE_PCI,
|
||||
.local = S3_DIAMOND_STEALTH64_968,
|
||||
.init = s3_init,
|
||||
.close = s3_close,
|
||||
.reset = s3_reset,
|
||||
{ .available = s3_diamond_stealth64_968_available },
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_standard_config2
|
||||
};
|
||||
|
||||
const device_t s3_9fx_771_pci_device = {
|
||||
.name = "S3 Vision968 PCI (Number 9 9FX 771)",
|
||||
.internal_name = "n9_9fx_771_pci",
|
||||
@@ -10901,20 +10980,6 @@ const device_t s3_phoenix_vision968_pci_device = {
|
||||
.config = s3_standard_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_vision968_vlb_device = {
|
||||
.name = "S3 Vision968 VLB (Phoenix)",
|
||||
.internal_name = "px_vision968_vlb",
|
||||
.flags = DEVICE_VLB,
|
||||
.local = S3_PHOENIX_VISION968,
|
||||
.init = s3_init,
|
||||
.close = s3_close,
|
||||
.reset = s3_reset,
|
||||
{ .available = s3_phoenix_vision968_available },
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_standard_config
|
||||
};
|
||||
|
||||
const device_t s3_mirovideo_40sv_ergo_968_pci_device = {
|
||||
.name = "S3 Vision968 PCI (MiroVIDEO 40SV Ergo)",
|
||||
.internal_name = "mirovideo40sv_pci",
|
||||
@@ -11195,20 +11260,6 @@ const device_t s3_9fx_531_pci_device = {
|
||||
.config = s3_9fx_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_vision868_vlb_device = {
|
||||
.name = "S3 Vision868 VLB (Phoenix)",
|
||||
.internal_name = "px_vision868_vlb",
|
||||
.flags = DEVICE_VLB,
|
||||
.local = S3_PHOENIX_VISION868,
|
||||
.init = s3_init,
|
||||
.close = s3_close,
|
||||
.reset = s3_reset,
|
||||
{ .available = s3_phoenix_vision868_available },
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_standard_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_vision868_pci_device = {
|
||||
.name = "S3 Vision868 PCI (Phoenix)",
|
||||
.internal_name = "px_vision868_pci",
|
||||
|
@@ -188,6 +188,7 @@ video_cards[] = {
|
||||
{ &s3_diamond_stealth64_pci_device },
|
||||
{ &s3_9fx_pci_device },
|
||||
{ &s3_phoenix_trio64_pci_device },
|
||||
{ &s3_diamond_stealth64_968_pci_device },
|
||||
{ &s3_elsa_winner2000_pro_x_pci_device },
|
||||
{ &s3_mirovideo_40sv_ergo_968_pci_device },
|
||||
{ &s3_9fx_771_pci_device },
|
||||
@@ -252,8 +253,7 @@ video_cards[] = {
|
||||
{ &s3_9fx_vlb_device },
|
||||
{ &s3_phoenix_trio64_vlb_device },
|
||||
{ &s3_spea_mirage_p64_vlb_device },
|
||||
{ &s3_phoenix_vision968_vlb_device },
|
||||
{ &s3_phoenix_vision868_vlb_device },
|
||||
{ &s3_diamond_stealth64_968_vlb_device },
|
||||
{ &s3_stb_powergraph_64_video_vlb_device },
|
||||
{ &ht216_32_standalone_device },
|
||||
{ &tgui9400cxi_device },
|
||||
|
Reference in New Issue
Block a user