This commit is contained in:
OBattler
2025-06-09 18:22:51 +02:00
4 changed files with 41 additions and 26 deletions

View File

@@ -24,6 +24,19 @@
#define INT_FIFO_EMP (1 << 3)
#define INT_MASK 0xf
typedef enum {
IBM_8514A_TYPE = 0,
ATI_38800_TYPE,
ATI_68800_TYPE,
TYPE_MAX
} ibm8514_card_type;
typedef enum {
IBM = 0,
ATI,
EXTENSIONS_MAX
} ibm8514_extensions_t;
typedef struct hwcursor8514_t {
int ena;
int x;
@@ -58,7 +71,7 @@ typedef struct ibm8514_t {
int force_old_addr;
int type;
int local;
ibm8514_card_type local;
int bpp;
int on;
int accel_bpp;
@@ -246,7 +259,8 @@ typedef struct ibm8514_t {
int pitch;
int ext_pitch;
int ext_crt_pitch;
int extensions;
ibm8514_extensions_t extensions;
int onboard;
int linear;
uint32_t vram_amount;
int vram_512k_8514;
@@ -263,9 +277,9 @@ typedef struct ibm8514_t {
} ibm8514_t;
#define IBM_8514A (((dev->local & 0xff) == 0x00) && (dev->extensions == 0x00))
#define ATI_8514A_ULTRA (((dev->local & 0xff) == 0x00) && (dev->extensions == 0x01))
#define ATI_GRAPHICS_ULTRA ((dev->local & 0xff) == 0x01)
#define ATI_MACH32 ((dev->local & 0xff) == 0x02)
#define IBM_8514A (((dev->local & 0xff) == IBM_8514A_TYPE) && (dev->extensions == IBM))
#define ATI_8514A_ULTRA (((dev->local & 0xff) == IBM_8514A_TYPE) && (dev->extensions == ATI))
#define ATI_GRAPHICS_ULTRA ((dev->local & 0xff) == ATI_38800_TYPE)
#define ATI_MACH32 ((dev->local & 0xff) == ATI_68800_TYPE)
#endif /*VIDEO_8514A_H*/

View File

@@ -214,7 +214,7 @@ emu_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
(GetForegroundWindow() == ((HWND) secondaryRenderer->winId())));
}
bool skip = ((nCode < 0) || (nCode != HC_ACTION) || !is_over_window);
bool skip = ((nCode < 0) || (nCode != HC_ACTION) || !is_over_window || (kbd_req_capture && !mouse_capture));
if (skip)
return CallNextHookEx(NULL, nCode, wParam, lParam);

View File

@@ -3693,10 +3693,10 @@ ibm8514_poll(void *priv)
svga->render8514(svga);
svga->x_add = (overscan_x >> 1);
svga->x_add = svga->left_overscan;
ibm8514_render_overscan_left(dev, svga);
ibm8514_render_overscan_right(dev, svga);
svga->x_add = (overscan_x >> 1);
svga->x_add = svga->left_overscan;
if (dev->hwcursor_on) {
if (svga->hwcursor_draw)
@@ -3796,7 +3796,7 @@ ibm8514_poll(void *priv)
dev->dispon = 1;
dev->displine = (dev->interlace && dev->oddeven) ? 1 : 0;
svga->x_add = (overscan_x >> 1);
svga->x_add = svga->left_overscan;
dev->hwcursor_on = 0;
dev->hwcursor_latch = dev->hwcursor;
@@ -3966,7 +3966,7 @@ ibm8514_init(const device_t *info)
bios_addr = 0xc6000;
switch (dev->extensions) {
case 1:
case ATI:
if (rom_present(BIOS_MACH8_ROM_PATH)) {
mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t));
svga->ext8514 = mach;
@@ -3977,13 +3977,14 @@ ibm8514_init(const device_t *info)
0, MEM_MAPPING_EXTERNAL);
ati8514_init(svga, svga->ext8514, svga->dev8514);
mach->accel.scratch0 = ((((bios_addr >> 7) - 0x1000) >> 4));
mach->accel.scratch0 = ((bios_addr >> 7) - 0x1000) >> 4;
bios_rom_eeprom = mach->accel.scratch0;
if (dev->type & DEVICE_MCA) {
dev->pos_regs[0] = 0x88;
dev->pos_regs[1] = 0x80;
mach->eeprom.data[0] = 0x0000;
mach->eeprom.data[1] = bios_rom_eeprom | ((bios_rom_eeprom | 0x01) << 8);
ibm8514_log("EEPROM Data1=%04x.\n", mach->eeprom.data[1]);
mca_add(ati8514_mca_read, ati8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga);
ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr", 1);
mem_mapping_disable(&dev->bios_rom.mapping);
@@ -4067,12 +4068,12 @@ static const device_config_t isa_ext8514_config[] = {
.description = "Vendor",
.type = CONFIG_SELECTION,
.default_string = NULL,
.default_int = 0,
.default_int = IBM,
.file_filter = NULL,
.spinner = { 0 },
.selection = {
{ .description = "IBM", .value = 0 },
{ .description = "ATI", .value = 1 },
{ .description = "IBM", .value = IBM },
{ .description = "ATI", .value = ATI },
{ .description = "" }
},
.bios = { { 0 } }
@@ -4127,12 +4128,12 @@ static const device_config_t mca_ext8514_config[] = {
.description = "Vendor",
.type = CONFIG_SELECTION,
.default_string = NULL,
.default_int = 0,
.default_int = IBM,
.file_filter = NULL,
.spinner = { 0 },
.selection = {
{ .description = "IBM", .value = 0 },
{ .description = "ATI", .value = 1 },
{ .description = "IBM", .value = IBM },
{ .description = "ATI", .value = ATI },
{ .description = "" }
},
.bios = { { 0 } }
@@ -4145,7 +4146,7 @@ const device_t gen8514_isa_device = {
.name = "IBM 8514/A clone (ISA)",
.internal_name = "8514_isa",
.flags = DEVICE_ISA16,
.local = 0,
.local = IBM_8514A_TYPE,
.init = ibm8514_init,
.close = ibm8514_close,
.reset = NULL,
@@ -4159,7 +4160,7 @@ const device_t ibm8514_mca_device = {
.name = "IBM 8514/A (MCA)",
.internal_name = "8514_mca",
.flags = DEVICE_MCA,
.local = 0,
.local = IBM_8514A_TYPE,
.init = ibm8514_init,
.close = ibm8514_close,
.reset = NULL,

View File

@@ -7409,7 +7409,7 @@ const device_t mach8_vga_isa_device = {
.name = "ATI Mach8 (ATI Graphics Ultra) (ISA)",
.internal_name = "mach8_vga_isa",
.flags = DEVICE_ISA,
.local = 1,
.local = ATI_38800_TYPE,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,
@@ -7423,7 +7423,7 @@ const device_t mach32_isa_device = {
.name = "ATI Mach32 (ISA)",
.internal_name = "mach32_isa",
.flags = DEVICE_ISA,
.local = 2,
.local = ATI_68800_TYPE,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,
@@ -7437,7 +7437,7 @@ const device_t mach32_vlb_device = {
.name = "ATI Mach32 (VLB)",
.internal_name = "mach32_vlb",
.flags = DEVICE_VLB,
.local = 2,
.local = ATI_68800_TYPE,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,
@@ -7451,7 +7451,7 @@ const device_t mach32_mca_device = {
.name = "ATI Mach32 (MCA)",
.internal_name = "mach32_mca",
.flags = DEVICE_MCA,
.local = 2,
.local = ATI_68800_TYPE,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,
@@ -7465,7 +7465,7 @@ const device_t mach32_pci_device = {
.name = "ATI Mach32 (PCI)",
.internal_name = "mach32_pci",
.flags = DEVICE_PCI,
.local = 2,
.local = ATI_68800_TYPE,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,
@@ -7479,7 +7479,7 @@ const device_t mach32_onboard_pci_device = {
.name = "ATI Mach32 (PCI) On-Board",
.internal_name = "mach32_pci_onboard",
.flags = DEVICE_PCI,
.local = 2 | 0x100,
.local = ATI_68800_TYPE | 0x100,
.init = mach8_init,
.close = mach_close,
.reset = mach_reset,