diff --git a/src/include/86box/video.h b/src/include/86box/video.h index 1037e213f..aee8c4b4d 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -527,6 +527,7 @@ extern const device_t s3_trio64v2_dx_onboard_pci_device; /* S3 ViRGE */ extern const device_t s3_virge_325_pci_device; +extern const device_t s3_virge_325_onboard_pci_device; extern const device_t s3_diamond_stealth_2000_pci_device; extern const device_t s3_diamond_stealth_3000_pci_device; extern const device_t s3_stb_velocity_3d_pci_device; diff --git a/src/machine/m_at_socket8.c b/src/machine/m_at_socket8.c index 8c2688c1a..e6f78f6a2 100644 --- a/src/machine/m_at_socket8.c +++ b/src/machine/m_at_socket8.c @@ -324,10 +324,10 @@ machine_at_ap440fx_init(const machine_t *model) device_add(&intel_flash_bxt_ami_device); if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&cs4236b_device); + device_add(machine_get_snd_device(machine)); if (gfxcard[0] == VID_INTERNAL) - device_add(&s3_virge_375_onboard_pci_device); + device_add(machine_get_vid_device(machine)); return ret; } diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 9e1ee2205..b482951ef 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -13758,7 +13758,7 @@ const machine_t machines[] = { .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = &s3_virge_375_onboard_pci_device, + .vid_device = &s3_virge_325_onboard_pci_device, .snd_device = &cs4236b_device, .net_device = NULL }, diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index 5d91d164e..4bcbaea9e 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -4306,7 +4306,7 @@ s3_virge_reset(void *priv) static void * s3_virge_init(const device_t *info) { - const char *bios_fn; + const char *bios_fn = NULL; virge_t *virge = (virge_t *) calloc(1, sizeof(virge_t)); reset_state = calloc(1, sizeof(virge_t)); @@ -4319,7 +4319,7 @@ s3_virge_init(const device_t *info) virge->onboard = !!(info->local & 0x100); - switch (info->local) { + if (!virge->onboard) switch (info->local) { case S3_VIRGE_325: bios_fn = ROM_VIRGE_325; break; @@ -4333,7 +4333,7 @@ s3_virge_init(const device_t *info) bios_fn = ROM_STB_VELOCITY_3D; break; case S3_VIRGE_DX: - bios_fn = virge->onboard ? NULL : ROM_VIRGE_DX; + bios_fn = ROM_VIRGE_DX; break; case S3_DIAMOND_STEALTH3D_2000PRO: bios_fn = ROM_DIAMOND_STEALTH3D_2000PRO; @@ -4816,6 +4816,20 @@ const device_t s3_virge_325_pci_device = { .config = s3_virge_config }; +const device_t s3_virge_325_onboard_pci_device = { + .name = "S3 ViRGE (325) On-Board PCI", + .internal_name = "virge325_onboard_pci", + .flags = DEVICE_PCI, + .local = S3_VIRGE_325 | 0x100, + .init = s3_virge_init, + .close = s3_virge_close, + .reset = s3_virge_reset, + { .available = NULL }, + .speed_changed = s3_virge_speed_changed, + .force_redraw = s3_virge_force_redraw, + .config = s3_virge_config +}; + const device_t s3_diamond_stealth_2000_pci_device = { .name = "S3 ViRGE (Diamond Stealth 3D 2000) PCI", .internal_name = "stealth3d_2000_pci",