From 16e8384bdb952a0d1487e121e16fbc6bd598f44e Mon Sep 17 00:00:00 2001 From: win2kgamer <47463859+win2kgamer@users.noreply.github.com> Date: Tue, 17 Feb 2026 20:51:50 -0600 Subject: [PATCH 1/2] Cirrus: Revert to the old behavior of loading the generic ISA VBIOS on the Vectra 486VL and Siemens-Nixdorf D824, fixes Windows 3.1 drivers --- src/video/vid_cl54xx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index c02f5191a..32dbaca13 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -4335,9 +4335,9 @@ gd54xx_init(const device_t *info) case CIRRUS_ID_CLGD5428: if (info->local & 0x200) { if (machines[machine].init == machine_at_vect486vl_init) - romfn = BIOS_GD5428_ONBOARD_HP_PATH; + romfn = BIOS_GD5428_ISA_PATH; else if (machines[machine].init == machine_at_d824_init) - romfn = BIOS_GD5428_ONBOARD_SNI_PATH; + romfn = BIOS_GD5428_ISA_PATH; else if (machines[machine].init == machine_at_acera1g_init) romfn = BIOS_GD5428_ONBOARD_ACER_PATH; else From 84ab3315a54712c18b5e8359b4c56e990450a062 Mon Sep 17 00:00:00 2001 From: win2kgamer <47463859+win2kgamer@users.noreply.github.com> Date: Tue, 17 Feb 2026 21:22:10 -0600 Subject: [PATCH 2/2] HP Vectra 486VL: Give the machine its correct Cirrus CL-GD5426 ISA onboard video --- src/include/86box/video.h | 1 + src/machine/machine_table.c | 2 +- src/video/vid_cl54xx.c | 27 +++++++++++++++++++++------ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/include/86box/video.h b/src/include/86box/video.h index d7369af28..a83aa9371 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -384,6 +384,7 @@ extern const device_t gd5424_onboard_device; extern const device_t gd5426_isa_device; extern const device_t gd5426_diamond_speedstar_pro_a1_isa_device; extern const device_t gd5426_vlb_device; +extern const device_t gd5426_onboard_isa_device; extern const device_t gd5426_onboard_device; extern const device_t gd5428_isa_device; extern const device_t gd5428_vlb_onboard_device; diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index f1006ffb4..03df2d9df 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -7779,7 +7779,7 @@ const machine_t machines[] = { .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/ - .vid_device = &gd5428_onboard_device, + .vid_device = &gd5426_onboard_isa_device, .snd_device = NULL, .net_device = NULL }, diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 32dbaca13..ae2da7e15 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -4317,7 +4317,10 @@ gd54xx_init(const device_t *info) case CIRRUS_ID_CLGD5426: if (info->local & 0x200) - romfn = NULL; + if (machines[machine].init == machine_at_vect486vl_init) + romfn = BIOS_GD5428_ISA_PATH; + else + romfn = NULL; else { if (info->local & 0x100) romfn = BIOS_GD5426_DIAMOND_A1_ISA_PATH; @@ -4334,9 +4337,7 @@ gd54xx_init(const device_t *info) case CIRRUS_ID_CLGD5428: if (info->local & 0x200) { - if (machines[machine].init == machine_at_vect486vl_init) - romfn = BIOS_GD5428_ISA_PATH; - else if (machines[machine].init == machine_at_d824_init) + if (machines[machine].init == machine_at_d824_init) romfn = BIOS_GD5428_ISA_PATH; else if (machines[machine].init == machine_at_acera1g_init) romfn = BIOS_GD5428_ONBOARD_ACER_PATH; @@ -4444,7 +4445,7 @@ gd54xx_init(const device_t *info) if (id <= CIRRUS_ID_CLGD5428) { if ((id == CIRRUS_ID_CLGD5428) && (info->local & 0x200) && (info->local & 0x1000)) vram = 1024; - else if ((id == CIRRUS_ID_CLGD5426) && (info->local & 0x200)) + else if ((id == CIRRUS_ID_CLGD5426) && (info->local & 0x200) && (info->local & 0x1000)) vram = 1024; else if (id == CIRRUS_ID_CLGD5401) vram = 256; @@ -5193,11 +5194,25 @@ const device_t gd5426_vlb_device = { .config = gd5426_config }; +const device_t gd5426_onboard_isa_device = { + .name = "Cirrus Logic GD5426 (ISA) (On-Board)", + .internal_name = "cl_gd5426_onboard", + .flags = DEVICE_ISA16, + .local = CIRRUS_ID_CLGD5426 | 0x200, + .init = gd54xx_init, + .close = gd54xx_close, + .reset = gd54xx_reset, + .available = gd5428_isa_available, + .speed_changed = gd54xx_speed_changed, + .force_redraw = gd54xx_force_redraw, + .config = gd542x_config +}; + const device_t gd5426_onboard_device = { .name = "Cirrus Logic GD5426 (VLB) (On-Board)", .internal_name = "cl_gd5426_onboard", .flags = DEVICE_VLB, - .local = CIRRUS_ID_CLGD5426 | 0x200, + .local = CIRRUS_ID_CLGD5426 | 0x200 | 0x1000, .init = gd54xx_init, .close = gd54xx_close, .reset = gd54xx_reset,