diff --git a/src/include/86box/video.h b/src/include/86box/video.h index 5fa6c5d57..3a1cb0d77 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -319,6 +319,7 @@ extern const device_t gd5426_onboard_device; extern const device_t gd5428_isa_device; extern const device_t gd5428_vlb_device; extern const device_t gd5428_diamond_speedstar_pro_b1_vlb_device; +extern const device_t gd5428_boca_isa_device; extern const device_t gd5428_mca_device; extern const device_t gd5426_mca_device; extern const device_t gd5428_onboard_device; diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 709e2a972..c18e4c532 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -51,6 +51,7 @@ #define BIOS_GD5428_ISA_PATH "roms/video/cirruslogic/5428.bin" #define BIOS_GD5428_MCA_PATH "roms/video/cirruslogic/SVGA141.ROM" #define BIOS_GD5428_PATH "roms/video/cirruslogic/vlbusjapan.BIN" +#define BIOS_GD5428_BOCA_ISA_PATH "roms/video/cirruslogic/boca_gd5428_1.30b.bin" #define BIOS_GD5429_PATH "roms/video/cirruslogic/5429.vbi" #define BIOS_GD5430_DIAMOND_A8_VLB_PATH "roms/video/cirruslogic/diamondvlbus.bin" #define BIOS_GD5430_PATH "roms/video/cirruslogic/pci.bin" @@ -3913,7 +3914,10 @@ static void case CIRRUS_ID_CLGD5428: if (info->local & 0x100) - romfn = BIOS_GD5428_DIAMOND_B1_VLB_PATH; + if (gd54xx->vlb) + romfn = BIOS_GD5428_DIAMOND_B1_VLB_PATH; + else + romfn = BIOS_GD5428_BOCA_ISA_PATH; else { if (gd54xx->vlb) romfn = BIOS_GD5428_PATH; @@ -4181,6 +4185,12 @@ gd5428_diamond_b1_available(void) return rom_present(BIOS_GD5428_DIAMOND_B1_VLB_PATH); } +static int +gd5428_boca_isa_available(void) +{ + return rom_present(BIOS_GD5428_BOCA_ISA_PATH); +} + static int gd5428_isa_available(void) { @@ -4694,6 +4704,20 @@ const device_t gd5428_diamond_speedstar_pro_b1_vlb_device = { .config = gd5426_config }; +const device_t gd5428_boca_isa_device = { + .name = "Cirrus Logic GD5428 (ISA) (BOCA Research 4610)", + .internal_name = "cl_gd5428_boca_isa", + .flags = DEVICE_AT | DEVICE_ISA, + .local = CIRRUS_ID_CLGD5428 | 0x100, + .init = gd54xx_init, + .close = gd54xx_close, + .reset = gd54xx_reset, + { .available = gd5428_boca_isa_available }, + .speed_changed = gd54xx_speed_changed, + .force_redraw = gd54xx_force_redraw, + .config = gd5426_config +}; + const device_t gd5428_mca_device = { .name = "Cirrus Logic GD5428 (MCA) (IBM SVGA Adapter/A)", .internal_name = "ibm1mbsvga", diff --git a/src/video/vid_table.c b/src/video/vid_table.c index 94d4601a8..6935769fd 100644 --- a/src/video/vid_table.c +++ b/src/video/vid_table.c @@ -101,6 +101,7 @@ video_cards[] = { { &gd5422_isa_device }, { &gd5426_isa_device }, { &gd5426_diamond_speedstar_pro_a1_isa_device }, + { &gd5428_boca_isa_device }, { &gd5428_isa_device }, { &gd5429_isa_device }, { &gd5434_isa_device },