Added the miroCRYSTAL 3D, based on a S3 ViRGE.

This commit is contained in:
MaxwellS04
2024-08-16 20:36:26 +07:00
parent 88741b021e
commit ab71f9d3e2
3 changed files with 28 additions and 0 deletions

View File

@@ -528,6 +528,7 @@ extern const device_t s3_trio64v2_dx_onboard_pci_device;
/* S3 ViRGE */ /* S3 ViRGE */
extern const device_t s3_virge_325_pci_device; extern const device_t s3_virge_325_pci_device;
extern const device_t s3_diamond_stealth_2000_pci_device; extern const device_t s3_diamond_stealth_2000_pci_device;
extern const device_t s3_mirocrystal_3d_pci_device;
extern const device_t s3_diamond_stealth_3000_pci_device; extern const device_t s3_diamond_stealth_3000_pci_device;
extern const device_t s3_stb_velocity_3d_pci_device; extern const device_t s3_stb_velocity_3d_pci_device;
extern const device_t s3_virge_375_pci_device; extern const device_t s3_virge_375_pci_device;

View File

@@ -61,6 +61,7 @@ static int dither[4][4] = {
#define ROM_VIRGE_325 "roms/video/s3virge/86c325.bin" #define ROM_VIRGE_325 "roms/video/s3virge/86c325.bin"
#define ROM_DIAMOND_STEALTH3D_2000 "roms/video/s3virge/s3virge.bin" #define ROM_DIAMOND_STEALTH3D_2000 "roms/video/s3virge/s3virge.bin"
#define ROM_MIROCRYSTAL_3D "roms/video/s3virge/miro Crystal 3D 1.02.bin"
#define ROM_DIAMOND_STEALTH3D_3000 "roms/video/s3virge/diamondstealth3000.vbi" #define ROM_DIAMOND_STEALTH3D_3000 "roms/video/s3virge/diamondstealth3000.vbi"
#define ROM_STB_VELOCITY_3D "roms/video/s3virge/stb_velocity3d_110.BIN" #define ROM_STB_VELOCITY_3D "roms/video/s3virge/stb_velocity3d_110.BIN"
#define ROM_VIRGE_DX "roms/video/s3virge/86c375_1.bin" #define ROM_VIRGE_DX "roms/video/s3virge/86c375_1.bin"
@@ -91,6 +92,7 @@ static int dither[4][4] = {
enum { enum {
S3_VIRGE_325, S3_VIRGE_325,
S3_DIAMOND_STEALTH3D_2000, S3_DIAMOND_STEALTH3D_2000,
S3_MIROCRYSTAL_3D,
S3_DIAMOND_STEALTH3D_3000, S3_DIAMOND_STEALTH3D_3000,
S3_STB_VELOCITY_3D, S3_STB_VELOCITY_3D,
S3_VIRGE_DX, S3_VIRGE_DX,
@@ -4259,6 +4261,9 @@ s3_virge_init(const device_t *info)
case S3_DIAMOND_STEALTH3D_2000: case S3_DIAMOND_STEALTH3D_2000:
bios_fn = ROM_DIAMOND_STEALTH3D_2000; bios_fn = ROM_DIAMOND_STEALTH3D_2000;
break; break;
case S3_MIROCRYSTAL_3D:
bios_fn = ROM_MIROCRYSTAL_3D;
break;
case S3_DIAMOND_STEALTH3D_3000: case S3_DIAMOND_STEALTH3D_3000:
bios_fn = ROM_DIAMOND_STEALTH3D_3000; bios_fn = ROM_DIAMOND_STEALTH3D_3000;
break; break;
@@ -4353,6 +4358,7 @@ s3_virge_init(const device_t *info)
switch (info->local) { switch (info->local) {
case S3_VIRGE_325: case S3_VIRGE_325:
case S3_DIAMOND_STEALTH3D_2000: case S3_DIAMOND_STEALTH3D_2000:
case S3_MIROCRYSTAL_3D:
virge->fifo_slots_num = 8; virge->fifo_slots_num = 8;
virge->svga.decode_mask = (4 << 20) - 1; virge->svga.decode_mask = (4 << 20) - 1;
virge->virge_id_high = 0x56; virge->virge_id_high = 0x56;
@@ -4530,6 +4536,12 @@ s3_virge_325_available(void)
return rom_present(ROM_VIRGE_325); return rom_present(ROM_VIRGE_325);
} }
static int
s3_mirocrystal_3d_available(void)
{
return rom_present(ROM_MIROCRYSTAL_3D);
}
static int static int
s3_virge_988_diamond_available(void) s3_virge_988_diamond_available(void)
{ {
@@ -4763,6 +4775,20 @@ const device_t s3_diamond_stealth_2000_pci_device = {
.config = s3_virge_config .config = s3_virge_config
}; };
const device_t s3_diamond_stealth_2000_pci_device = {
.name = "S3 ViRGE (miroCRYSTAL 3D) PCI",
.internal_name = "mirocrystal_3d_pci",
.flags = DEVICE_PCI,
.local = S3_MIROCRYSTAL_3D,
.init = s3_virge_init,
.close = s3_virge_close,
.reset = s3_virge_reset,
{ .available = s3_mirocrystal_3d_available },
.speed_changed = s3_virge_speed_changed,
.force_redraw = s3_virge_force_redraw,
.config = s3_virge_357_config
};
const device_t s3_diamond_stealth_3000_pci_device = { const device_t s3_diamond_stealth_3000_pci_device = {
.name = "S3 ViRGE/VX (Diamond Stealth 3D 3000) PCI", .name = "S3 ViRGE/VX (Diamond Stealth 3D 3000) PCI",
.internal_name = "stealth3d_3000_pci", .internal_name = "stealth3d_3000_pci",

View File

@@ -174,6 +174,7 @@ video_cards[] = {
{ &s3_trio64v2_dx_pci_device }, { &s3_trio64v2_dx_pci_device },
{ &s3_virge_325_pci_device }, { &s3_virge_325_pci_device },
{ &s3_diamond_stealth_2000_pci_device }, { &s3_diamond_stealth_2000_pci_device },
{ &s3_mirocrystal_3d_pci_device },
{ &s3_diamond_stealth_3000_pci_device }, { &s3_diamond_stealth_3000_pci_device },
{ &s3_stb_velocity_3d_pci_device }, { &s3_stb_velocity_3d_pci_device },
{ &s3_virge_375_pci_device }, { &s3_virge_375_pci_device },