Merge pull request #5205 from thedax/quantum3d
Add basic support for the Quantum3D Raven.
This commit is contained in:
@@ -583,6 +583,7 @@ extern const device_t ps1vga_mca_device;
|
||||
extern const device_t voodoo_device;
|
||||
extern const device_t voodoo_banshee_device;
|
||||
extern const device_t creative_voodoo_banshee_device;
|
||||
extern const device_t quantum3d_raven_device;
|
||||
extern const device_t voodoo_3_1000_device;
|
||||
extern const device_t voodoo_3_1000_agp_device;
|
||||
extern const device_t voodoo_3_2000_device;
|
||||
|
||||
@@ -195,6 +195,7 @@ video_cards[] = {
|
||||
{ .device = &tgui9680_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &voodoo_banshee_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &creative_voodoo_banshee_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &quantum3d_raven_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &voodoo_3_1000_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &voodoo_3_2000_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
{ .device = &voodoo_3_3000_device, .flags = VIDEO_FLAG_TYPE_NONE },
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
|
||||
#define ROM_BANSHEE "roms/video/voodoo/Pci_sg.rom"
|
||||
#define ROM_CREATIVE_BANSHEE "roms/video/voodoo/BlasterPCI.rom"
|
||||
#define ROM_QUANTUM3D_RAVEN "roms/video/voodoo/RVPD0224.rom"
|
||||
#define ROM_VOODOO3_1000 "roms/video/voodoo/1k11sg.rom"
|
||||
#define ROM_VOODOO3_2000 "roms/video/voodoo/2k11sd.rom"
|
||||
#define ROM_VOODOO3_3000 "roms/video/voodoo/3k12sd.rom"
|
||||
@@ -78,6 +79,7 @@ static uint8_t vb_filter_bx_g[256][256];
|
||||
|
||||
enum {
|
||||
TYPE_BANSHEE = 0,
|
||||
TYPE_QUANTUM3D_RAVEN,
|
||||
TYPE_V3_1000,
|
||||
TYPE_V3_2000,
|
||||
TYPE_V3_3000,
|
||||
@@ -3374,6 +3376,16 @@ banshee_init_common(const device_t *info, char *fn, int has_sgram, int type, int
|
||||
}
|
||||
break;
|
||||
|
||||
case TYPE_QUANTUM3D_RAVEN:
|
||||
/* This case basically exists only to set the subsystem ID correctly for SF: Rush, a vendor-locked game. */
|
||||
/* We set the type back to TYPE_BANSHEE so the card behaves as a regular Banshee (no 3D glasses emulation). */
|
||||
banshee->pci_regs[0x2c] = 0x9c;
|
||||
banshee->pci_regs[0x2d] = 0x13;
|
||||
banshee->pci_regs[0x2e] = banshee->agp ? 0x16 : 0x17;
|
||||
banshee->pci_regs[0x2f] = 0x00;
|
||||
banshee->type = TYPE_BANSHEE;
|
||||
break;
|
||||
|
||||
case TYPE_V3_1000:
|
||||
banshee->pci_regs[0x2c] = 0x1a;
|
||||
banshee->pci_regs[0x2d] = 0x12;
|
||||
@@ -3451,6 +3463,12 @@ creative_banshee_init(const device_t *info)
|
||||
return banshee_init_common(info, ROM_CREATIVE_BANSHEE, 0, TYPE_BANSHEE, VOODOO_BANSHEE, 0);
|
||||
}
|
||||
|
||||
static void *
|
||||
quantum3d_raven_init(const device_t *info)
|
||||
{
|
||||
return banshee_init_common(info, ROM_QUANTUM3D_RAVEN, 0, TYPE_QUANTUM3D_RAVEN, VOODOO_BANSHEE, 0);
|
||||
}
|
||||
|
||||
static void *
|
||||
v3_1000_init(const device_t *info)
|
||||
{
|
||||
@@ -3547,6 +3565,12 @@ creative_banshee_available(void)
|
||||
return rom_present(ROM_CREATIVE_BANSHEE);
|
||||
}
|
||||
|
||||
static int
|
||||
quantum3d_raven_available(void)
|
||||
{
|
||||
return rom_present(ROM_QUANTUM3D_RAVEN);
|
||||
}
|
||||
|
||||
static int
|
||||
v3_1000_available(void)
|
||||
{
|
||||
@@ -3883,6 +3907,20 @@ const device_t creative_voodoo_banshee_device = {
|
||||
.config = banshee_sdram_config
|
||||
};
|
||||
|
||||
const device_t quantum3d_raven_device = {
|
||||
.name = "Quantum3D Raven",
|
||||
.internal_name = "q3d_raven_pci",
|
||||
.flags = DEVICE_PCI,
|
||||
.local = 0,
|
||||
.init = quantum3d_raven_init,
|
||||
.close = banshee_close,
|
||||
.reset = NULL,
|
||||
.available = quantum3d_raven_available,
|
||||
.speed_changed = banshee_speed_changed,
|
||||
.force_redraw = banshee_force_redraw,
|
||||
.config = banshee_sdram_config
|
||||
};
|
||||
|
||||
const device_t voodoo_3_1000_device = {
|
||||
.name = "3dfx Voodoo3 1000",
|
||||
.internal_name = "voodoo3_1k_pci",
|
||||
|
||||
Reference in New Issue
Block a user