The existing A-Trend Banshee card is AGP, which is not currently emulated.
Replaced with a reference SGRAM PCI card, and added a Creative SDRAM card.
This commit is contained in:
parent
2212b9a470
commit
a85f315daf
4 changed files with 88 additions and 14 deletions
|
|
@ -321,7 +321,8 @@ enum
|
||||||
GFX_CL_GD5428, /*Cirrus Logic CL-GD5428*/
|
GFX_CL_GD5428, /*Cirrus Logic CL-GD5428*/
|
||||||
GFX_IBM_GD5428, /*IBM 1MB SVGA Adapter/A*/
|
GFX_IBM_GD5428, /*IBM 1MB SVGA Adapter/A*/
|
||||||
GFX_TVGA9000B, /*Trident TVGA9000B*/
|
GFX_TVGA9000B, /*Trident TVGA9000B*/
|
||||||
GFX_BANSHEE,
|
GFX_BANSHEE, /*Voodoo Banshee - reference PCI board with SGRAM*/
|
||||||
|
GFX_CL_BANSHEE, /*Creative Labs Voodoo Blaster Banshee PCI - with SDRAM*/
|
||||||
|
|
||||||
GFX_MAX
|
GFX_MAX
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1864,7 +1864,7 @@ static void banshee_pci_write(int func, int addr, uint8_t val, void *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static device_config_t banshee_config[] =
|
static device_config_t banshee_sgram_config[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.name = "memory",
|
.name = "memory",
|
||||||
|
|
@ -1925,16 +1925,60 @@ static device_config_t banshee_config[] =
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *banshee_init()
|
static device_config_t banshee_sdram_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.name = "bilinear",
|
||||||
|
.description = "Bilinear filtering",
|
||||||
|
.type = CONFIG_BINARY,
|
||||||
|
.default_int = 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "render_threads",
|
||||||
|
.description = "Render threads",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "1",
|
||||||
|
.value = 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "2",
|
||||||
|
.value = 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 2
|
||||||
|
},
|
||||||
|
#ifndef NO_CODEGEN
|
||||||
|
{
|
||||||
|
.name = "recompiler",
|
||||||
|
.description = "Recompiler",
|
||||||
|
.type = CONFIG_BINARY,
|
||||||
|
.default_int = 1
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
.type = -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void *banshee_init_common(char *fn, int has_sgram)
|
||||||
{
|
{
|
||||||
int mem_size;
|
int mem_size;
|
||||||
banshee_t *banshee = malloc(sizeof(banshee_t));
|
banshee_t *banshee = malloc(sizeof(banshee_t));
|
||||||
memset(banshee, 0, sizeof(banshee_t));
|
memset(banshee, 0, sizeof(banshee_t));
|
||||||
|
|
||||||
// rom_init(&banshee->bios_rom, "gainward.BIN", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
rom_init(&banshee->bios_rom, fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
rom_init(&banshee->bios_rom, "a-trend.VBI", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
|
||||||
|
|
||||||
mem_size = device_get_config_int("memory");
|
if (has_sgram)
|
||||||
|
mem_size = device_get_config_int("memory");
|
||||||
|
else
|
||||||
|
mem_size = 16; /*SDRAM Banshee only supports 16 MB*/
|
||||||
|
|
||||||
svga_init(&banshee->svga, banshee, mem_size << 20,
|
svga_init(&banshee->svga, banshee, mem_size << 20,
|
||||||
banshee_recalctimings,
|
banshee_recalctimings,
|
||||||
banshee_in, banshee_out,
|
banshee_in, banshee_out,
|
||||||
|
|
@ -1976,9 +2020,10 @@ static void *banshee_init()
|
||||||
banshee->svga.miscout = 1;
|
banshee->svga.miscout = 1;
|
||||||
|
|
||||||
banshee->dramInit0 = 1 << 27;
|
banshee->dramInit0 = 1 << 27;
|
||||||
if (mem_size == 16)
|
if (has_sgram && mem_size == 16)
|
||||||
banshee->dramInit0 |= (1 << 26); /*2xSGRAM = 16 MB*/
|
banshee->dramInit0 |= (1 << 26); /*2xSGRAM = 16 MB*/
|
||||||
// banshee->dramInit1 = 1 << 30; /*SDRAM*/
|
if (!has_sgram)
|
||||||
|
banshee->dramInit1 = 1 << 30; /*SDRAM*/
|
||||||
banshee->svga.decode_mask = 0x1ffffff;
|
banshee->svga.decode_mask = 0x1ffffff;
|
||||||
|
|
||||||
pci_add(banshee_pci_read, banshee_pci_write, banshee);
|
pci_add(banshee_pci_read, banshee_pci_write, banshee);
|
||||||
|
|
@ -1996,9 +2041,22 @@ static void *banshee_init()
|
||||||
return banshee;
|
return banshee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *banshee_init(FILE *f, int has_sgram)
|
||||||
|
{
|
||||||
|
return banshee_init_common("pci_sg.rom", 1);
|
||||||
|
}
|
||||||
|
static void *creative_banshee_init(FILE *f, int has_sgram)
|
||||||
|
{
|
||||||
|
return banshee_init_common("blasterpci.rom", 0);
|
||||||
|
}
|
||||||
|
|
||||||
static int banshee_available()
|
static int banshee_available()
|
||||||
{
|
{
|
||||||
return rom_present("a-trend.VBI");
|
return rom_present("pci_sg.rom");
|
||||||
|
}
|
||||||
|
static int creative_banshee_available()
|
||||||
|
{
|
||||||
|
return rom_present("blasterpci.rom");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void banshee_close(void *p)
|
static void banshee_close(void *p)
|
||||||
|
|
@ -2085,9 +2143,9 @@ static void banshee_add_status_info(char *s, int max_len, void *p)
|
||||||
voodoo_recomp = 0;
|
voodoo_recomp = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
device_t atrend_voodoo_banshee_device =
|
device_t voodoo_banshee_device =
|
||||||
{
|
{
|
||||||
"A-Trend Helios 3D (Voodoo Banshee)",
|
"Voodoo Banshee PCI (reference)",
|
||||||
0,
|
0,
|
||||||
banshee_init,
|
banshee_init,
|
||||||
banshee_close,
|
banshee_close,
|
||||||
|
|
@ -2095,5 +2153,18 @@ device_t atrend_voodoo_banshee_device =
|
||||||
banshee_speed_changed,
|
banshee_speed_changed,
|
||||||
banshee_force_redraw,
|
banshee_force_redraw,
|
||||||
banshee_add_status_info,
|
banshee_add_status_info,
|
||||||
banshee_config
|
banshee_sgram_config
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t creative_voodoo_banshee_device =
|
||||||
|
{
|
||||||
|
"Creative Labs 3D Blaster Banshee PCI",
|
||||||
|
0,
|
||||||
|
creative_banshee_init,
|
||||||
|
banshee_close,
|
||||||
|
creative_banshee_available,
|
||||||
|
banshee_speed_changed,
|
||||||
|
banshee_force_redraw,
|
||||||
|
banshee_add_status_info,
|
||||||
|
banshee_sdram_config
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
extern device_t atrend_voodoo_banshee_device;
|
extern device_t voodoo_banshee_device;
|
||||||
|
extern device_t creative_voodoo_banshee_device;
|
||||||
|
|
||||||
void banshee_set_overlay_addr(void *p, uint32_t addr);
|
void banshee_set_overlay_addr(void *p, uint32_t addr);
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,6 @@ typedef struct
|
||||||
|
|
||||||
static VIDEO_CARD video_cards[] =
|
static VIDEO_CARD video_cards[] =
|
||||||
{
|
{
|
||||||
{"A-Trend Helios 3D (Voodoo Banshee)", "banshee", &atrend_voodoo_banshee_device, GFX_BANSHEE, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
|
||||||
{"Acumos AVGA2 / Cirrus Logic CL-GD5402", "avga2", &avga2_device, GFX_AVGA2, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
{"Acumos AVGA2 / Cirrus Logic CL-GD5402", "avga2", &avga2_device, GFX_AVGA2, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||||
{"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
{"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||||
{"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
{"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||||
|
|
@ -97,6 +96,7 @@ static VIDEO_CARD video_cards[] =
|
||||||
{"Cirrus Logic CL-GD5430", "cl_gd5430", &gd5430_device, GFX_CL_GD5430, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 8, 10, 10, 20}},
|
{"Cirrus Logic CL-GD5430", "cl_gd5430", &gd5430_device, GFX_CL_GD5430, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 8, 10, 10, 20}},
|
||||||
{"Cirrus Logic CL-GD5434", "cl_gd5434", &gd5434_device, GFX_CL_GD5434, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 8, 10, 10, 20}},
|
{"Cirrus Logic CL-GD5434", "cl_gd5434", &gd5434_device, GFX_CL_GD5434, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 8, 10, 10, 20}},
|
||||||
{"Compaq CGA", "compaq_cga", &compaq_cga_device, GFX_COMPAQ_CGA, VIDEO_FLAG_TYPE_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
{"Compaq CGA", "compaq_cga", &compaq_cga_device, GFX_COMPAQ_CGA, VIDEO_FLAG_TYPE_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||||
|
{"Creative Labs 3D Blaster Banshee PCI", "cl_banshee", &creative_voodoo_banshee_device, GFX_CL_BANSHEE, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||||
{"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
{"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 4, 4, 4, 10, 10, 10}},
|
||||||
{"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
{"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 3, 28, 28, 45}},
|
||||||
{"EGA", "ega", &ega_device, GFX_EGA, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
{"EGA", "ega", &ega_device, GFX_EGA, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||||
|
|
@ -129,6 +129,7 @@ static VIDEO_CARD video_cards[] =
|
||||||
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 3, 3, 6, 5, 5, 10}},
|
||||||
{"VGA", "vga", &vga_device, GFX_VGA, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
{"VGA", "vga", &vga_device, GFX_VGA, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||||
{"Wyse 700", "wy700", &wy700_device, GFX_WY700, VIDEO_FLAG_TYPE_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
{"Wyse 700", "wy700", &wy700_device, GFX_WY700, VIDEO_FLAG_TYPE_CGA, {VIDEO_ISA, 8, 16, 32, 8, 16, 32}},
|
||||||
|
{"Voodoo Banshee (reference)", "banshee", &voodoo_banshee_device, GFX_BANSHEE, VIDEO_FLAG_TYPE_SPECIAL, {VIDEO_BUS, 2, 2, 1, 20, 20, 21}},
|
||||||
{"", "", NULL, 0}
|
{"", "", NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue