The Microsoft/Logitech Bus Mouse now handles the unusual handshake issued by MS MOUSE.SYS version 3.0, fixes said driver (though it should be checked against real hardware);
Applied all the video-related PCem commits; The keyboard ALT+TAB detection now sends one extra ALT key down and up, so the guest does not get stuck in a menu bar.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* ATi Mach64 graphics card emulation.
|
||||
*
|
||||
* Version: @(#)vid_ati_mach64.c 1.0.11 2018/01/25
|
||||
* Version: @(#)vid_ati_mach64.c 1.0.12 2018/01/31
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -320,7 +320,11 @@ enum
|
||||
};
|
||||
|
||||
void mach64_write(uint32_t addr, uint8_t val, void *priv);
|
||||
void mach64_writew(uint32_t addr, uint16_t val, void *priv);
|
||||
void mach64_writel(uint32_t addr, uint32_t val, void *priv);
|
||||
uint8_t mach64_read(uint32_t addr, void *priv);
|
||||
uint16_t mach64_readw(uint32_t addr, void *priv);
|
||||
uint32_t mach64_readl(uint32_t addr, void *priv);
|
||||
void mach64_updatemapping(mach64_t *mach64);
|
||||
void mach64_recalctimings(svga_t *svga);
|
||||
void mach64_start_fill(mach64_t *mach64);
|
||||
@@ -514,14 +518,14 @@ void mach64_updatemapping(mach64_t *mach64)
|
||||
switch (svga->gdcreg[6] & 0xc)
|
||||
{
|
||||
case 0x0: /*128k at A0000*/
|
||||
mem_mapping_set_handler(&mach64->svga.mapping, mach64_read, NULL, NULL, mach64_write, NULL, NULL);
|
||||
mem_mapping_set_handler(&mach64->svga.mapping, mach64_read, mach64_readw, mach64_readl, mach64_write, mach64_writew, mach64_writel);
|
||||
mem_mapping_set_p(&mach64->svga.mapping, mach64);
|
||||
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x20000);
|
||||
mem_mapping_enable(&mach64->mmio_mapping);
|
||||
svga->banked_mask = 0xffff;
|
||||
break;
|
||||
case 0x4: /*64k at A0000*/
|
||||
mem_mapping_set_handler(&mach64->svga.mapping, mach64_read, NULL, NULL, mach64_write, NULL, NULL);
|
||||
mem_mapping_set_handler(&mach64->svga.mapping, mach64_read, mach64_readw, mach64_readl, mach64_write, mach64_writew, mach64_writel);
|
||||
mem_mapping_set_p(&mach64->svga.mapping, mach64);
|
||||
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
|
||||
svga->banked_mask = 0xffff;
|
||||
@@ -2813,6 +2817,22 @@ void mach64_write(uint32_t addr, uint8_t val, void *p)
|
||||
addr = (addr & 0x7fff) + mach64->bank_w[(addr >> 15) & 1];
|
||||
svga_write_linear(addr, val, svga);
|
||||
}
|
||||
void mach64_writew(uint32_t addr, uint16_t val, void *p)
|
||||
{
|
||||
mach64_t *mach64 = (mach64_t *)p;
|
||||
svga_t *svga = &mach64->svga;
|
||||
|
||||
addr = (addr & 0x7fff) + mach64->bank_w[(addr >> 15) & 1];
|
||||
svga_writew_linear(addr, val, svga);
|
||||
}
|
||||
void mach64_writel(uint32_t addr, uint32_t val, void *p)
|
||||
{
|
||||
mach64_t *mach64 = (mach64_t *)p;
|
||||
svga_t *svga = &mach64->svga;
|
||||
|
||||
addr = (addr & 0x7fff) + mach64->bank_w[(addr >> 15) & 1];
|
||||
svga_writel_linear(addr, val, svga);
|
||||
}
|
||||
|
||||
uint8_t mach64_read(uint32_t addr, void *p)
|
||||
{
|
||||
@@ -2823,6 +2843,22 @@ uint8_t mach64_read(uint32_t addr, void *p)
|
||||
ret = svga_read_linear(addr, svga);
|
||||
return ret;
|
||||
}
|
||||
uint16_t mach64_readw(uint32_t addr, void *p)
|
||||
{
|
||||
mach64_t *mach64 = (mach64_t *)p;
|
||||
svga_t *svga = &mach64->svga;
|
||||
|
||||
addr = (addr & 0x7fff) + mach64->bank_r[(addr >> 15) & 1];
|
||||
return svga_readw_linear(addr, svga);
|
||||
}
|
||||
uint32_t mach64_readl(uint32_t addr, void *p)
|
||||
{
|
||||
mach64_t *mach64 = (mach64_t *)p;
|
||||
svga_t *svga = &mach64->svga;
|
||||
|
||||
addr = (addr & 0x7fff) + mach64->bank_r[(addr >> 15) & 1];
|
||||
return svga_readl_linear(addr, svga);
|
||||
}
|
||||
|
||||
void mach64_hwcursor_draw(svga_t *svga, int displine)
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Emulation of the EGA, Chips & Technologies SuperEGA, and
|
||||
* AX JEGA graphics cards.
|
||||
*
|
||||
* Version: @(#)vid_ega.c 1.0.14 2018/01/25
|
||||
* Version: @(#)vid_ega.c 1.0.15 2018/02/01
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -682,8 +682,8 @@ void ega_write(uint32_t addr, uint8_t val, void *p)
|
||||
int writemask2 = ega->writemask;
|
||||
|
||||
egawrites++;
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_write_b;
|
||||
cycles_lost += video_timing_write_b;
|
||||
|
||||
if (addr >= 0xB0000) addr &= 0x7fff;
|
||||
else addr &= 0xffff;
|
||||
@@ -819,8 +819,8 @@ uint8_t ega_read(uint32_t addr, void *p)
|
||||
int readplane = ega->readplane;
|
||||
|
||||
egareads++;
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_read_b;
|
||||
cycles_lost += video_timing_read_b;
|
||||
if (addr >= 0xb0000) addr &= 0x7fff;
|
||||
else addr &= 0xffff;
|
||||
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
* PC2086, PC3086 use PVGA1A
|
||||
* MegaPC uses W90C11A
|
||||
*
|
||||
* Version: @(#)vid_paradise.c 1.0.3 2017/12/31
|
||||
* Version: @(#)vid_paradise.c 1.0.4 2018/01/31
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016-2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -50,8 +50,6 @@ typedef struct paradise_t
|
||||
uint32_t read_bank[4], write_bank[4];
|
||||
} paradise_t;
|
||||
|
||||
void paradise_write(uint32_t addr, uint8_t val, void *p);
|
||||
uint8_t paradise_read(uint32_t addr, void *p);
|
||||
void paradise_remap(paradise_t *paradise);
|
||||
|
||||
|
||||
@@ -256,21 +254,32 @@ void paradise_recalctimings(svga_t *svga)
|
||||
svga->render = svga_render_8bpp_highres;
|
||||
}
|
||||
|
||||
void paradise_write(uint32_t addr, uint8_t val, void *p)
|
||||
static void paradise_write(uint32_t addr, uint8_t val, void *p)
|
||||
{
|
||||
paradise_t *paradise = (paradise_t *)p;
|
||||
addr = (addr & 0x7fff) + paradise->write_bank[(addr >> 15) & 3];
|
||||
|
||||
svga_write_linear(addr, val, ¶dise->svga);
|
||||
}
|
||||
static void paradise_writew(uint32_t addr, uint16_t val, void *p)
|
||||
{
|
||||
paradise_t *paradise = (paradise_t *)p;
|
||||
addr = (addr & 0x7fff) + paradise->write_bank[(addr >> 15) & 3];
|
||||
svga_writew_linear(addr, val, ¶dise->svga);
|
||||
}
|
||||
|
||||
uint8_t paradise_read(uint32_t addr, void *p)
|
||||
static uint8_t paradise_read(uint32_t addr, void *p)
|
||||
{
|
||||
paradise_t *paradise = (paradise_t *)p;
|
||||
addr = (addr & 0x7fff) + paradise->read_bank[(addr >> 15) & 3];
|
||||
return svga_read_linear(addr, ¶dise->svga);
|
||||
}
|
||||
|
||||
static uint16_t paradise_readw(uint32_t addr, void *p)
|
||||
{
|
||||
paradise_t *paradise = (paradise_t *)p;
|
||||
addr = (addr & 0x7fff) + paradise->read_bank[(addr >> 15) & 3];
|
||||
return svga_readw_linear(addr, ¶dise->svga);
|
||||
}
|
||||
|
||||
void *paradise_pvga1a_init(device_t *info, uint32_t memsize)
|
||||
{
|
||||
@@ -286,7 +295,7 @@ void *paradise_pvga1a_init(device_t *info, uint32_t memsize)
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, NULL, NULL, paradise_write, NULL, NULL);
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, paradise_readw, NULL, paradise_write, paradise_writew, NULL);
|
||||
mem_mapping_set_p(¶dise->svga.mapping, paradise);
|
||||
|
||||
svga->crtc[0x31] = 'W';
|
||||
@@ -319,7 +328,7 @@ void *paradise_wd90c11_init(device_t *info)
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, NULL, NULL, paradise_write, NULL, NULL);
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, paradise_readw, NULL, paradise_write, paradise_writew, NULL);
|
||||
mem_mapping_set_p(¶dise->svga.mapping, paradise);
|
||||
|
||||
svga->crtc[0x31] = 'W';
|
||||
@@ -354,7 +363,7 @@ void *paradise_wd90c30_init(device_t *info, uint32_t memsize)
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, NULL, NULL, paradise_write, NULL, NULL);
|
||||
mem_mapping_set_handler(¶dise->svga.mapping, paradise_read, paradise_readw, NULL, paradise_write, paradise_writew, NULL);
|
||||
mem_mapping_set_p(¶dise->svga.mapping, paradise);
|
||||
|
||||
svga->crtc[0x31] = 'W';
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* This is intended to be used by another SVGA driver,
|
||||
* and not as a card in it's own right.
|
||||
*
|
||||
* Version: @(#)vid_svga.c 1.0.17 2018/01/25
|
||||
* Version: @(#)vid_svga.c 1.0.18 2018/02/01
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -956,8 +956,8 @@ void svga_write(uint32_t addr, uint8_t val, void *p)
|
||||
|
||||
egawrites++;
|
||||
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_write_b;
|
||||
cycles_lost += video_timing_write_b;
|
||||
|
||||
/* if (svga_output) pclog("Writeega %06X ",addr); */
|
||||
addr &= svga->banked_mask;
|
||||
@@ -1175,8 +1175,8 @@ uint8_t svga_read(uint32_t addr, void *p)
|
||||
uint32_t latch_addr;
|
||||
int readplane = svga->readplane;
|
||||
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_read_b;
|
||||
cycles_lost += video_timing_read_b;
|
||||
|
||||
egareads++;
|
||||
|
||||
@@ -1251,8 +1251,8 @@ void svga_write_linear(uint32_t addr, uint8_t val, void *p)
|
||||
uint8_t vala, valb, valc, vald, wm = svga->writemask;
|
||||
int writemask2 = svga->writemask;
|
||||
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_write_b;
|
||||
cycles_lost += video_timing_write_b;
|
||||
|
||||
egawrites++;
|
||||
|
||||
@@ -1447,8 +1447,8 @@ uint8_t svga_read_linear(uint32_t addr, void *p)
|
||||
uint8_t temp, temp2, temp3, temp4;
|
||||
int readplane = svga->readplane;
|
||||
|
||||
cycles -= video_timing_b;
|
||||
cycles_lost += video_timing_b;
|
||||
cycles -= video_timing_read_b;
|
||||
cycles_lost += video_timing_read_b;
|
||||
|
||||
egareads++;
|
||||
|
||||
@@ -1618,8 +1618,8 @@ void svga_writew(uint32_t addr, uint16_t val, void *p)
|
||||
|
||||
egawrites += 2;
|
||||
|
||||
cycles -= video_timing_w;
|
||||
cycles_lost += video_timing_w;
|
||||
cycles -= video_timing_write_w;
|
||||
cycles_lost += video_timing_write_w;
|
||||
|
||||
/* if (svga_output) pclog("svga_writew: %05X ", addr); */
|
||||
addr = (addr & svga->banked_mask) + svga->write_bank;
|
||||
@@ -1648,8 +1648,8 @@ void svga_writel(uint32_t addr, uint32_t val, void *p)
|
||||
|
||||
egawrites += 4;
|
||||
|
||||
cycles -= video_timing_l;
|
||||
cycles_lost += video_timing_l;
|
||||
cycles -= video_timing_write_l;
|
||||
cycles_lost += video_timing_write_l;
|
||||
|
||||
/* if (svga_output) pclog("svga_writel: %05X ", addr); */
|
||||
addr = (addr & svga->banked_mask) + svga->write_bank;
|
||||
@@ -1673,8 +1673,8 @@ uint16_t svga_readw(uint32_t addr, void *p)
|
||||
|
||||
egareads += 2;
|
||||
|
||||
cycles -= video_timing_w;
|
||||
cycles_lost += video_timing_w;
|
||||
cycles -= video_timing_read_w;
|
||||
cycles_lost += video_timing_read_w;
|
||||
|
||||
addr = (addr & svga->banked_mask) + svga->read_bank;
|
||||
if ((!svga->extvram) && (addr >= 0x10000)) return 0xffff;
|
||||
@@ -1697,8 +1697,8 @@ uint32_t svga_readl(uint32_t addr, void *p)
|
||||
|
||||
egareads += 4;
|
||||
|
||||
cycles -= video_timing_l;
|
||||
cycles_lost += video_timing_l;
|
||||
cycles -= video_timing_read_l;
|
||||
cycles_lost += video_timing_read_l;
|
||||
|
||||
addr = (addr & svga->banked_mask) + svga->read_bank;
|
||||
if ((!svga->extvram) && (addr >= 0x10000)) return 0xffffffff;
|
||||
@@ -1722,8 +1722,8 @@ void svga_writew_linear(uint32_t addr, uint16_t val, void *p)
|
||||
|
||||
egawrites += 2;
|
||||
|
||||
cycles -= video_timing_w;
|
||||
cycles_lost += video_timing_w;
|
||||
cycles -= video_timing_write_w;
|
||||
cycles_lost += video_timing_write_w;
|
||||
|
||||
/* if (svga_output) pclog("Write LFBw %08X %04X\n", addr, val); */
|
||||
addr -= svga->linear_base;
|
||||
@@ -1750,8 +1750,8 @@ void svga_writel_linear(uint32_t addr, uint32_t val, void *p)
|
||||
|
||||
egawrites += 4;
|
||||
|
||||
cycles -= video_timing_l;
|
||||
cycles_lost += video_timing_l;
|
||||
cycles -= video_timing_write_l;
|
||||
cycles_lost += video_timing_write_l;
|
||||
|
||||
/* if (svga_output) pclog("Write LFBl %08X %08X\n", addr, val); */
|
||||
addr -= svga->linear_base;
|
||||
@@ -1772,8 +1772,8 @@ uint16_t svga_readw_linear(uint32_t addr, void *p)
|
||||
|
||||
egareads += 2;
|
||||
|
||||
cycles -= video_timing_w;
|
||||
cycles_lost += video_timing_w;
|
||||
cycles -= video_timing_read_w;
|
||||
cycles_lost += video_timing_read_w;
|
||||
|
||||
addr -= svga->linear_base;
|
||||
addr &= svga->decode_mask;
|
||||
@@ -1792,8 +1792,8 @@ uint32_t svga_readl_linear(uint32_t addr, void *p)
|
||||
|
||||
egareads += 4;
|
||||
|
||||
cycles -= video_timing_l;
|
||||
cycles_lost += video_timing_l;
|
||||
cycles -= video_timing_read_l;
|
||||
cycles_lost += video_timing_read_l;
|
||||
|
||||
addr -= svga->linear_base;
|
||||
addr &= svga->decode_mask;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Define all known video cards.
|
||||
*
|
||||
* Version: @(#)vid_table.c 1.0.13 2018/01/27
|
||||
* Version: @(#)vid_table.c 1.0.14 2018/02/01
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
@@ -78,96 +78,93 @@ typedef struct {
|
||||
char internal_name[24];
|
||||
device_t *device;
|
||||
int legacy_id;
|
||||
struct {
|
||||
int type;
|
||||
int b, w, l;
|
||||
} timing;
|
||||
video_timings_t timing;
|
||||
} VIDEO_CARD;
|
||||
|
||||
|
||||
static VIDEO_CARD
|
||||
video_cards[] = {
|
||||
{ "None", "none", NULL, GFX_NONE },
|
||||
{ "Internal", "internal", NULL, GFX_INTERNAL, {VIDEO_ISA, 8, 16, 32}},
|
||||
{"[ISA] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_isa", &mach64gx_isa_device, GFX_MACH64GX_ISA, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] ATI VGA Charger (ATI-28800-5)", "ati28800", &ati28800_device, GFX_VGACHARGER, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] ATI VGA Wonder XL24 (ATI-28800-6)", "ati28800w", &ati28800_wonderxl24_device, GFX_VGAWONDERXL24, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] CGA", "cga", &cga_device, GFX_CGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Chips & Technologies SuperEGA", "superega", &sega_device, GFX_SUPER_EGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "Internal", "internal", NULL, GFX_INTERNAL, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_isa", &mach64gx_isa_device, GFX_MACH64GX_ISA, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||
{ "[ISA] ATI VGA Charger (ATI-28800-5)", "ati28800", &ati28800_device, GFX_VGACHARGER, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||
{ "[ISA] ATI VGA Wonder XL24 (ATI-28800-6)", "ati28800w", &ati28800_wonderxl24_device, GFX_VGAWONDERXL24, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||
{ "[ISA] ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] CGA", "cga", &cga_device, GFX_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Chips & Technologies SuperEGA", "superega", &sega_device, GFX_SUPER_EGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
#if defined(DEV_BRANCH) && defined(USE_CIRRUS)
|
||||
{ "[ISA] Cirrus Logic CL-GD5422", "cl_gd5422", &gd5422_device, GFX_CL_GD5422, {VIDEO_ISA, 6, 8, 16}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5430", "cl_gd5430", &gd5430_device, GFX_CL_GD5430, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5434", "cl_gd5434", &gd5434_device, GFX_CL_GD5434, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5436", "cl_gd5436", &gd5436_device, GFX_CL_GD5436, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5440", "cl_gd5440", &gd5440_device, GFX_CL_GD5440, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5422", "cl_gd5422", &gd5422_device, GFX_CL_GD5422, {VIDEO_ISA, 6, 8, 16, 6, 8, 16}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429, {VIDEO_ISA, 3, 3, 6, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5430", "cl_gd5430", &gd5430_device, GFX_CL_GD5430, {VIDEO_ISA, 3, 3, 6, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5434", "cl_gd5434", &gd5434_device, GFX_CL_GD5434, {VIDEO_ISA, 3, 3, 6, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5436", "cl_gd5436", &gd5436_device, GFX_CL_GD5436, {VIDEO_ISA, 3, 3, 6, 3, 3, 6}},
|
||||
{ "[ISA] Cirrus Logic CL-GD5440", "cl_gd5440", &gd5440_device, GFX_CL_GD5440, {VIDEO_ISA, 3, 3, 6, 3, 3, 6}},
|
||||
#endif
|
||||
{ "[ISA] Compaq ATI VGA Wonder XL (ATI-28800-5)","compaq_ati28800", &compaq_ati28800_device, GFX_VGAWONDERXL, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Compaq CGA", "compaq_cga", &compaq_cga_device, GFX_COMPAQ_CGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Compaq CGA 2", "compaq_cga_2", &compaq_cga_2_device, GFX_COMPAQ_CGA_2, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Compaq EGA", "compaq_ega", &cpqega_device, GFX_COMPAQ_EGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] EGA", "ega", &ega_device, GFX_EGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Hercules", "hercules", &hercules_device, GFX_HERCULES, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Hercules Plus", "hercules_plus", &herculesplus_device, GFX_HERCULESPLUS, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] MDA", "mda", &mda_device, GFX_MDA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] MDSI Genius", "genius", &genius_device, GFX_GENIUS, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] OAK OTI-067", "oti067", &oti067_device, GFX_OTI067, {VIDEO_ISA, 6, 8, 16}},
|
||||
{ "[ISA] OAK OTI-077", "oti077", &oti077_device, GFX_OTI077, {VIDEO_ISA, 6, 8, 16}},
|
||||
{ "[ISA] Paradise PVGA1A", "pvga1a", ¶dise_pvga1a_device, GFX_PVGA1A, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Paradise WD90C11-LR", "wd90c11", ¶dise_wd90c11_device, GFX_WD90C11, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Paradise WD90C30-LR", "wd90c30", ¶dise_wd90c30_device, GFX_WD90C30, {VIDEO_ISA, 6, 8, 16}},
|
||||
{ "[ISA] Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS, {VIDEO_ISA, 8, 16, 32}},
|
||||
{ "[ISA] Compaq ATI VGA Wonder XL (ATI-28800-5)","compaq_ati28800", &compaq_ati28800_device, GFX_VGAWONDERXL, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||
{ "[ISA] Compaq CGA", "compaq_cga", &compaq_cga_device, GFX_COMPAQ_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Compaq CGA 2", "compaq_cga_2", &compaq_cga_2_device, GFX_COMPAQ_CGA_2, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Compaq EGA", "compaq_ega", &cpqega_device, GFX_COMPAQ_EGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] EGA", "ega", &ega_device, GFX_EGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Hercules", "hercules", &hercules_device, GFX_HERCULES, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Hercules Plus", "hercules_plus", &herculesplus_device, GFX_HERCULESPLUS, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] MDA", "mda", &mda_device, GFX_MDA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] MDSI Genius", "genius", &genius_device, GFX_GENIUS, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] OAK OTI-067", "oti067", &oti067_device, GFX_OTI067, {VIDEO_ISA, 6, 8, 16, 6, 8, 16}},
|
||||
{ "[ISA] OAK OTI-077", "oti077", &oti077_device, GFX_OTI077, {VIDEO_ISA, 6, 8, 16, 6, 8, 16}},
|
||||
{ "[ISA] Paradise PVGA1A", "pvga1a", ¶dise_pvga1a_device, GFX_PVGA1A, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Paradise WD90C11-LR", "wd90c11", ¶dise_wd90c11_device, GFX_WD90C11, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{ "[ISA] Paradise WD90C30-LR", "wd90c30", ¶dise_wd90c30_device, GFX_WD90C30, {VIDEO_ISA, 6, 8, 16, 6, 8, 16}},
|
||||
{ "[ISA] Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
#if defined(DEV_BRANCH) && defined(USE_TI)
|
||||
{"[ISA] TI CF62011 SVGA", "ti_cf62011", &ti_cf62011_device, GFX_TICF62011, {VIDEO_ISA, 8, 16, 32}},
|
||||
{"[ISA] TI CF62011 SVGA", "ti_cf62011", &ti_cf62011_device, GFX_TICF62011, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
#endif
|
||||
{ "[ISA] Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA, {VIDEO_ISA, 3, 3, 6}},
|
||||
{ "[ISA] Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000, {VIDEO_ISA, 3, 3, 6}},
|
||||
{"[ISA] VGA", "vga", &vga_device, GFX_VGA, {VIDEO_ISA, 8, 16, 32}},
|
||||
{"[ISA] Wyse 700", "wy700", &wy700_device, GFX_WY700, {VIDEO_ISA, 8, 16, 32}},
|
||||
{"[PCI] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_pci", &mach64gx_pci_device, GFX_MACH64GX_PCI, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[PCI] ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2, {VIDEO_BUS, 3, 3, 4}},
|
||||
{"[PCI] Cardex Tseng ET4000/w32p", "et4000w32p_pci", &et4000w32p_cardex_pci_device, GFX_ET4000W32_CARDEX_PCI, {VIDEO_BUS, 4, 5, 10}},
|
||||
{ "[ISA] Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA, {VIDEO_ISA, 3, 3, 6, 8, 8, 12}},
|
||||
{ "[ISA] Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||
{"[ISA] VGA", "vga", &vga_device, GFX_VGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{"[ISA] Wyse 700", "wy700", &wy700_device, GFX_WY700, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||
{"[PCI] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_pci", &mach64gx_pci_device, GFX_MACH64GX_PCI, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||
{"[PCI] ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||
{"[PCI] Cardex Tseng ET4000/w32p", "et4000w32p_pci", &et4000w32p_cardex_pci_device, GFX_ET4000W32_CARDEX_PCI, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||
#if defined(DEV_BRANCH) && defined(USE_STEALTH32)
|
||||
{"[PCI] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_pci", &et4000w32p_pci_device, GFX_ET4000W32_PCI, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[PCI] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_pci", &et4000w32p_pci_device, GFX_ET4000W32_PCI, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||
#endif
|
||||
{"[PCI] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_pci", &s3_virge_pci_device, GFX_VIRGE_PCI, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[PCI] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_pci", &s3_virge_988_pci_device, GFX_VIRGEVX_PCI, {VIDEO_BUS, 3, 4, 7}},
|
||||
{"[PCI] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_pci", &s3_diamond_stealth64_pci_device, GFX_STEALTH64_PCI, {VIDEO_BUS, 3, 4, 7}},
|
||||
{"[PCI] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_pci", &s3_virge_pci_device, GFX_VIRGE_PCI, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[PCI] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_pci", &s3_virge_988_pci_device, GFX_VIRGEVX_PCI, {VIDEO_BUS, 2, 2, 4, 26, 26, 42}},
|
||||
{"[PCI] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_pci", &s3_diamond_stealth64_pci_device, GFX_STEALTH64_PCI, {VIDEO_BUS, 2, 2, 4, 26, 26, 42}},
|
||||
#if defined(DEV_BRANCH) && defined(USE_RIVA)
|
||||
{"[PCI] nVidia RIVA 128", "riva128", &riva128_device, GFX_RIVA128, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[PCI] nVidia RIVA TNT", "rivatnt", &rivatnt_device, GFX_RIVATNT, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[PCI] nVidia RIVA TNT2", "rivatnt2", &rivatnt2_device, GFX_RIVATNT2, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[PCI] nVidia RIVA 128", "riva128", &riva128_device, GFX_RIVA128, {VIDEO_BUS, 2, 2, 3, 24, 24, 36}},
|
||||
{"[PCI] nVidia RIVA TNT", "rivatnt", &rivatnt_device, GFX_RIVATNT, {VIDEO_BUS, 2, 2, 3, 24, 24, 36}},
|
||||
{"[PCI] nVidia RIVA TNT2", "rivatnt2", &rivatnt2_device, GFX_RIVATNT2, {VIDEO_BUS, 2, 2, 3, 24, 24, 36}},
|
||||
#endif
|
||||
{"[PCI] Number Nine 9FX (S3 Trio64)", "n9_9fx_pci", &s3_9fx_pci_device, GFX_N9_9FX_PCI, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[PCI] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_pci", &s3_bahamas64_pci_device, GFX_BAHAMAS64_PCI, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[PCI] Phoenix S3 Vision864", "px_vision864_pci", &s3_phoenix_vision864_pci_device, GFX_PHOENIX_VISION864_PCI, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[PCI] Phoenix S3 Trio32", "px_trio32_pci", &s3_phoenix_trio32_pci_device, GFX_PHOENIX_TRIO32_PCI, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[PCI] Phoenix S3 Trio64", "px_trio64_pci", &s3_phoenix_trio64_pci_device, GFX_PHOENIX_TRIO64_PCI, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[PCI] S3 ViRGE/DX", "virge375_pci", &s3_virge_375_pci_device, GFX_VIRGEDX_PCI, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[PCI] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_pci", &s3_virge_375_4_pci_device, GFX_VIRGEDX4_PCI, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[PCI] Trident TGUI9440", "tgui9440_pci", &tgui9440_pci_device, GFX_TGUI9440_PCI, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[VLB] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_vlb", &mach64gx_vlb_device, GFX_MACH64GX_VLB, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[VLB] Cardex Tseng ET4000/w32p", "et4000w32p_vlb", &et4000w32p_cardex_vlb_device, GFX_ET4000W32_CARDEX_VLB, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[PCI] Number Nine 9FX (S3 Trio64)", "n9_9fx_pci", &s3_9fx_pci_device, GFX_N9_9FX_PCI, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[PCI] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_pci", &s3_bahamas64_pci_device, GFX_BAHAMAS64_PCI, {VIDEO_BUS, 4, 4, 5, 20, 20, 35}},
|
||||
{"[PCI] Phoenix S3 Vision864", "px_vision864_pci", &s3_phoenix_vision864_pci_device, GFX_PHOENIX_VISION864_PCI, {VIDEO_BUS, 4, 4, 5, 20, 20, 35}},
|
||||
{"[PCI] Phoenix S3 Trio32", "px_trio32_pci", &s3_phoenix_trio32_pci_device, GFX_PHOENIX_TRIO32_PCI, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[PCI] Phoenix S3 Trio64", "px_trio64_pci", &s3_phoenix_trio64_pci_device, GFX_PHOENIX_TRIO64_PCI, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[PCI] S3 ViRGE/DX", "virge375_pci", &s3_virge_375_pci_device, GFX_VIRGEDX_PCI, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[PCI] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_pci", &s3_virge_375_4_pci_device, GFX_VIRGEDX4_PCI, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[PCI] Trident TGUI9440", "tgui9440_pci", &tgui9440_pci_device, GFX_TGUI9440_PCI, {VIDEO_BUS, 4, 8, 16, 4, 8, 16}},
|
||||
{"[VLB] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_vlb", &mach64gx_vlb_device, GFX_MACH64GX_VLB, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||
{"[VLB] Cardex Tseng ET4000/w32p", "et4000w32p_vlb", &et4000w32p_cardex_vlb_device, GFX_ET4000W32_CARDEX_VLB, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||
#if defined(DEV_BRANCH) && defined(USE_CIRRUS)
|
||||
{"[VLB] Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[VLB] Cirrus Logic CL-GD5430", "cl_gd5430_vlb", &dia5430_device, GFX_CL_GD5430, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[VLB] Cirrus Logic CL-GD5446", "cl_gd5446", &gd5446_device, GFX_CL_GD5446, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[VLB] Cirrus Logic CL-GD5430", "cl_gd5430_vlb", &dia5430_device, GFX_CL_GD5430, {VIDEO_BUS, 4, 8, 16, 4, 8, 16}},
|
||||
{"[VLB] Cirrus Logic CL-GD5446", "cl_gd5446", &gd5446_device, GFX_CL_GD5446, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||
#endif
|
||||
#if defined(DEV_BRANCH) && defined(USE_STEALTH32)
|
||||
{"[VLB] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_vlb", &et4000w32p_vlb_device, GFX_ET4000W32_VLB, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[VLB] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_vlb", &et4000w32p_vlb_device, GFX_ET4000W32_VLB, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||
#endif
|
||||
{"[VLB] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_vlb", &s3_virge_vlb_device, GFX_VIRGE_VLB, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[VLB] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_vlb", &s3_virge_988_vlb_device, GFX_VIRGEVX_VLB, {VIDEO_BUS, 3, 4, 7}},
|
||||
{"[VLB] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_vlb", &s3_diamond_stealth64_vlb_device, GFX_STEALTH64_VLB, {VIDEO_BUS, 3, 4, 7}},
|
||||
{"[VLB] Number Nine 9FX (S3 Trio64)", "n9_9fx_vlb", &s3_9fx_vlb_device, GFX_N9_9FX_VLB, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[VLB] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_vlb", &s3_bahamas64_vlb_device, GFX_BAHAMAS64_VLB, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[VLB] Phoenix S3 Vision864", "px_vision864_vlb", &s3_phoenix_vision864_vlb_device, GFX_PHOENIX_VISION864_VLB, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[VLB] Phoenix S3 Trio32", "px_trio32_vlb", &s3_phoenix_trio32_vlb_device, GFX_PHOENIX_TRIO32_VLB, {VIDEO_BUS, 4, 5, 10}},
|
||||
{"[VLB] Phoenix S3 Trio64", "px_trio64_vlb", &s3_phoenix_trio64_vlb_device, GFX_PHOENIX_TRIO64_VLB, {VIDEO_BUS, 3, 5, 10}},
|
||||
{"[VLB] S3 ViRGE/DX", "virge375_vlb", &s3_virge_375_vlb_device, GFX_VIRGEDX_VLB, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[VLB] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_vlb", &s3_virge_375_4_vlb_device, GFX_VIRGEDX4_VLB, {VIDEO_BUS, 2, 3, 4}},
|
||||
{"[VLB] Trident TGUI9440", "tgui9440_vlb", &tgui9440_vlb_device, GFX_TGUI9440_VLB, {VIDEO_BUS, 4, 8, 16}},
|
||||
{"[VLB] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_vlb", &s3_virge_vlb_device, GFX_VIRGE_VLB, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[VLB] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_vlb", &s3_virge_988_vlb_device, GFX_VIRGEVX_VLB, {VIDEO_BUS, 2, 2, 4, 26, 26, 42}},
|
||||
{"[VLB] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_vlb", &s3_diamond_stealth64_vlb_device, GFX_STEALTH64_VLB, {VIDEO_BUS, 2, 2, 4, 26, 26, 42}},
|
||||
{"[VLB] Number Nine 9FX (S3 Trio64)", "n9_9fx_vlb", &s3_9fx_vlb_device, GFX_N9_9FX_VLB, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[VLB] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_vlb", &s3_bahamas64_vlb_device, GFX_BAHAMAS64_VLB, {VIDEO_BUS, 4, 4, 5, 20, 20, 35}},
|
||||
{"[VLB] Phoenix S3 Vision864", "px_vision864_vlb", &s3_phoenix_vision864_vlb_device, GFX_PHOENIX_VISION864_VLB, {VIDEO_BUS, 4, 4, 5, 20, 20, 35}},
|
||||
{"[VLB] Phoenix S3 Trio32", "px_trio32_vlb", &s3_phoenix_trio32_vlb_device, GFX_PHOENIX_TRIO32_VLB, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[VLB] Phoenix S3 Trio64", "px_trio64_vlb", &s3_phoenix_trio64_vlb_device, GFX_PHOENIX_TRIO64_VLB, {VIDEO_BUS, 3, 2, 4, 25, 25, 40}},
|
||||
{"[VLB] S3 ViRGE/DX", "virge375_vlb", &s3_virge_375_vlb_device, GFX_VIRGEDX_VLB, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[VLB] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_vlb", &s3_virge_375_4_vlb_device, GFX_VIRGEDX4_VLB, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||
{"[VLB] Trident TGUI9440", "tgui9440_vlb", &tgui9440_vlb_device, GFX_TGUI9440_VLB, {VIDEO_BUS, 4, 8, 16, 4, 8, 16}},
|
||||
{"", "", NULL, -1 }
|
||||
};
|
||||
|
||||
@@ -229,31 +226,10 @@ video_card_has_config(int card)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
video_card_timing_gettype(int card)
|
||||
video_timings_t *
|
||||
video_card_gettiming(int card)
|
||||
{
|
||||
return(video_cards[card].timing.type);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
video_card_timing_getb(int card)
|
||||
{
|
||||
return(video_cards[card].timing.b);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
video_card_timing_getw(int card)
|
||||
{
|
||||
return(video_cards[card].timing.w);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
video_card_timing_getl(int card)
|
||||
{
|
||||
return(video_cards[card].timing.l);
|
||||
return((void *) &video_cards[card].timing);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
* W = 3 bus clocks
|
||||
* L = 4 bus clocks
|
||||
*
|
||||
* Version: @(#)video.c 1.0.13 2018/01/27
|
||||
* Version: @(#)video.c 1.0.14 2018/02/01
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -96,9 +96,12 @@ int fullchange = 0;
|
||||
uint8_t edatlookup[4][4];
|
||||
int overscan_x = 0,
|
||||
overscan_y = 0;
|
||||
int video_timing_b = 0,
|
||||
video_timing_w = 0,
|
||||
video_timing_l = 0;
|
||||
int video_timing_read_b = 0,
|
||||
video_timing_read_w = 0,
|
||||
video_timing_read_l = 0;
|
||||
int video_timing_write_b = 0,
|
||||
video_timing_write_w = 0,
|
||||
video_timing_write_l = 0;
|
||||
int video_res_x = 0,
|
||||
video_res_y = 0,
|
||||
video_bpp = 0;
|
||||
@@ -338,43 +341,110 @@ cgapal_rebuild(void)
|
||||
}
|
||||
|
||||
|
||||
static video_timings_t timing_dram = {VIDEO_BUS, 0,0,0, 0,0,0}; /*No additional waitstates*/
|
||||
static video_timings_t timing_pc1512 = {VIDEO_BUS, 0,0,0, 0,0,0}; /*PC1512 video code handles waitstates itself*/
|
||||
static video_timings_t timing_pc1640 = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_pc200 = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_m24 = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_pvga1a = {VIDEO_ISA, 6, 8,16, 6, 8,16};
|
||||
static video_timings_t timing_wd90c11 = {VIDEO_ISA, 3, 3, 6, 5, 5,10};
|
||||
static video_timings_t timing_vga = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_ps1_svga = {VIDEO_ISA, 6, 8,16, 6, 8,16};
|
||||
static video_timings_t timing_t3100e = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
|
||||
void
|
||||
video_update_timing(void)
|
||||
{
|
||||
video_timings_t *timing;
|
||||
int new_gfxcard;
|
||||
int type, b, w, l;
|
||||
|
||||
if (video_speed == -1) {
|
||||
new_gfxcard = video_old_to_new(gfxcard);
|
||||
new_gfxcard = 0;
|
||||
|
||||
type = video_card_timing_gettype(new_gfxcard);
|
||||
b = video_card_timing_getb(new_gfxcard);
|
||||
w = video_card_timing_getw(new_gfxcard);
|
||||
l = video_card_timing_getl(new_gfxcard);
|
||||
|
||||
if (type == VIDEO_ISA) {
|
||||
video_timing_b = (int)(isa_timing * b);
|
||||
video_timing_w = (int)(isa_timing * w);
|
||||
video_timing_l = (int)(isa_timing * l);
|
||||
switch(romset) {
|
||||
case ROM_IBMPCJR:
|
||||
case ROM_TANDY:
|
||||
case ROM_TANDY1000HX:
|
||||
case ROM_TANDY1000SL2:
|
||||
timing = &timing_dram;
|
||||
break;
|
||||
case ROM_PC1512:
|
||||
timing = &timing_pc1512;
|
||||
break;
|
||||
case ROM_PC1640:
|
||||
timing = &timing_pc1640;
|
||||
break;
|
||||
case ROM_PC200:
|
||||
timing = &timing_pc200;
|
||||
break;
|
||||
case ROM_OLIM24:
|
||||
timing = &timing_m24;
|
||||
break;
|
||||
case ROM_PC2086:
|
||||
case ROM_PC3086:
|
||||
timing = &timing_pvga1a;
|
||||
break;
|
||||
case ROM_MEGAPC:
|
||||
case ROM_MEGAPCDX:
|
||||
timing = &timing_wd90c11;
|
||||
break;
|
||||
case ROM_IBMPS1_2011:
|
||||
case ROM_IBMPS2_M30_286:
|
||||
case ROM_IBMPS2_M50:
|
||||
case ROM_IBMPS2_M55SX:
|
||||
case ROM_IBMPS2_M80:
|
||||
timing = &timing_vga;
|
||||
break;
|
||||
case ROM_IBMPS1_2121:
|
||||
case ROM_IBMPS1_2133:
|
||||
timing = &timing_ps1_svga;
|
||||
break;
|
||||
case ROM_T3100E:
|
||||
timing = &timing_t3100e;
|
||||
break;
|
||||
default:
|
||||
new_gfxcard = video_old_to_new(gfxcard);
|
||||
timing = video_card_gettiming(new_gfxcard);
|
||||
break;
|
||||
}
|
||||
|
||||
if (timing->type == VIDEO_ISA) {
|
||||
video_timing_read_b = ISA_CYCLES(timing->read_b);
|
||||
video_timing_read_w = ISA_CYCLES(timing->read_w);
|
||||
video_timing_read_l = ISA_CYCLES(timing->read_l);
|
||||
video_timing_write_b = ISA_CYCLES(timing->write_b);
|
||||
video_timing_write_w = ISA_CYCLES(timing->write_w);
|
||||
video_timing_write_l = ISA_CYCLES(timing->write_l);
|
||||
} else {
|
||||
video_timing_b = (int)(bus_timing * b);
|
||||
video_timing_w = (int)(bus_timing * w);
|
||||
video_timing_l = (int)(bus_timing * l);
|
||||
video_timing_read_b = (int)(bus_timing * timing->read_b);
|
||||
video_timing_read_w = (int)(bus_timing * timing->read_w);
|
||||
video_timing_read_l = (int)(bus_timing * timing->read_l);
|
||||
video_timing_write_b = (int)(bus_timing * timing->write_b);
|
||||
video_timing_write_w = (int)(bus_timing * timing->write_w);
|
||||
video_timing_write_l = (int)(bus_timing * timing->write_l);
|
||||
}
|
||||
} else {
|
||||
if (video_timing[video_speed][0] == VIDEO_ISA) {
|
||||
video_timing_b = (int)(isa_timing * video_timing[video_speed][1]);
|
||||
video_timing_w = (int)(isa_timing * video_timing[video_speed][2]);
|
||||
video_timing_l = (int)(isa_timing * video_timing[video_speed][3]);
|
||||
video_timing_read_b = ISA_CYCLES(video_timing[video_speed][1]);
|
||||
video_timing_read_w = ISA_CYCLES(video_timing[video_speed][2]);
|
||||
video_timing_read_l = ISA_CYCLES(video_timing[video_speed][3]);
|
||||
video_timing_write_b = ISA_CYCLES(video_timing[video_speed][1]);
|
||||
video_timing_write_w = ISA_CYCLES(video_timing[video_speed][2]);
|
||||
video_timing_write_l = ISA_CYCLES(video_timing[video_speed][3]);
|
||||
} else {
|
||||
video_timing_b = (int)(bus_timing * video_timing[video_speed][1]);
|
||||
video_timing_w = (int)(bus_timing * video_timing[video_speed][2]);
|
||||
video_timing_l = (int)(bus_timing * video_timing[video_speed][3]);
|
||||
video_timing_read_b = (int)(bus_timing * video_timing[video_speed][1]);
|
||||
video_timing_read_w = (int)(bus_timing * video_timing[video_speed][2]);
|
||||
video_timing_read_l = (int)(bus_timing * video_timing[video_speed][3]);
|
||||
video_timing_write_b = (int)(bus_timing * video_timing[video_speed][1]);
|
||||
video_timing_write_w = (int)(bus_timing * video_timing[video_speed][2]);
|
||||
video_timing_write_l = (int)(bus_timing * video_timing[video_speed][3]);
|
||||
}
|
||||
}
|
||||
|
||||
if (cpu_16bitbus)
|
||||
video_timing_l = video_timing_w * 2;
|
||||
if (cpu_16bitbus) {
|
||||
video_timing_read_l = video_timing_read_w * 2;
|
||||
video_timing_write_l = video_timing_write_w * 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Definitions for the video controller module.
|
||||
*
|
||||
* Version: @(#)video.h 1.0.11 2018/01/27
|
||||
* Version: @(#)video.h 1.0.12 2018/02/01
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -135,6 +135,12 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
int write_b, write_w, write_l;
|
||||
int read_b, read_w, read_l;
|
||||
} video_timings_t;
|
||||
|
||||
typedef struct {
|
||||
int w, h;
|
||||
uint8_t *dat;
|
||||
@@ -173,9 +179,12 @@ extern int enable_overscan;
|
||||
extern int overscan_x,
|
||||
overscan_y;
|
||||
extern int force_43;
|
||||
extern int video_timing_b,
|
||||
video_timing_w,
|
||||
video_timing_l;
|
||||
extern int video_timing_read_b,
|
||||
video_timing_read_w,
|
||||
video_timing_read_l;
|
||||
extern int video_timing_write_b,
|
||||
video_timing_write_w,
|
||||
video_timing_write_l;
|
||||
extern int video_speed;
|
||||
extern int video_res_x,
|
||||
video_res_y,
|
||||
@@ -203,10 +212,7 @@ extern char *video_card_getname(int card);
|
||||
extern device_t *video_card_getdevice(int card);
|
||||
#endif
|
||||
extern int video_card_has_config(int card);
|
||||
extern int video_card_timing_gettype(int card);
|
||||
extern int video_card_timing_getb(int card);
|
||||
extern int video_card_timing_getw(int card);
|
||||
extern int video_card_timing_getl(int card);
|
||||
extern video_timings_t *video_card_gettiming(int card);
|
||||
extern int video_card_getid(char *s);
|
||||
extern int video_old_to_new(int card);
|
||||
extern int video_new_to_old(int card);
|
||||
|
||||
Reference in New Issue
Block a user