Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
@@ -53,8 +53,12 @@ typedef struct ht216_t
|
||||
uint32_t read_banks[2], write_banks[2];
|
||||
|
||||
uint8_t bg_latch[8];
|
||||
uint8_t fg_latch[4];
|
||||
uint8_t bg_plane_sel, fg_plane_sel;
|
||||
|
||||
uint8_t ht_regs[256];
|
||||
|
||||
uint8_t pos_regs[8];
|
||||
} ht216_t;
|
||||
|
||||
|
||||
@@ -94,7 +98,7 @@ uint8_t ht216_in(uint16_t addr, void *p);
|
||||
#define BIOS_VIDEO7_VGA_1024I_PATH L"roms/video/video7/Video Seven VGA 1024i - BIOS - v2.19 - 435-0062-05 - U17 - 27C256.BIN"
|
||||
|
||||
static video_timings_t timing_v7vga_isa = {VIDEO_ISA, 3, 3, 6, 5, 5, 10};
|
||||
static video_timings_t timing_v7vga_vlb = {VIDEO_ISA, 5, 5, 9, 20, 20, 30};
|
||||
static video_timings_t timing_v7vga_vlb = {VIDEO_BUS, 5, 5, 9, 20, 20, 30};
|
||||
|
||||
|
||||
#ifdef ENABLE_HT216_LOG
|
||||
@@ -203,6 +207,34 @@ ht216_out(uint16_t addr, uint8_t val, void *p)
|
||||
case 0xe9:
|
||||
ht216_remap(ht216);
|
||||
break;
|
||||
|
||||
case 0xec:
|
||||
ht216->fg_latch[0] = val;
|
||||
break;
|
||||
case 0xed:
|
||||
ht216->fg_latch[1] = val;
|
||||
break;
|
||||
case 0xee:
|
||||
ht216->fg_latch[2] = val;
|
||||
break;
|
||||
case 0xef:
|
||||
ht216->fg_latch[3] = val;
|
||||
break;
|
||||
|
||||
case 0xf0:
|
||||
ht216->fg_latch[ht216->fg_plane_sel] = val;
|
||||
ht216->fg_plane_sel = (ht216->fg_plane_sel + 1) & 3;
|
||||
break;
|
||||
|
||||
case 0xf1:
|
||||
ht216->bg_plane_sel = val & 3;
|
||||
ht216->fg_plane_sel = (val & 0x30) >> 4;
|
||||
break;
|
||||
|
||||
case 0xf2:
|
||||
svga->latch.b[ht216->bg_plane_sel] = val;
|
||||
ht216->bg_plane_sel = (ht216->bg_plane_sel + 1) & 3;
|
||||
break;
|
||||
|
||||
case 0xf6:
|
||||
svga->vram_display_mask = (val & 0x40) ? ht216->vram_mask : 0x3ffff;
|
||||
@@ -289,6 +321,7 @@ ht216_in(uint16_t addr, void *p)
|
||||
{
|
||||
ht216_t *ht216 = (ht216_t *)p;
|
||||
svga_t *svga = &ht216->svga;
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 || (addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1))
|
||||
addr ^= 0x60;
|
||||
@@ -319,6 +352,16 @@ ht216_in(uint16_t addr, void *p)
|
||||
return svga->latch.b[2];
|
||||
case 0xa3:
|
||||
return svga->latch.b[3];
|
||||
|
||||
case 0xf0:
|
||||
ret = ht216->fg_latch[ht216->fg_plane_sel];
|
||||
ht216->fg_plane_sel = 0;
|
||||
return ret;
|
||||
|
||||
case 0xf2:
|
||||
ret = svga->latch.b[ht216->bg_plane_sel];
|
||||
ht216->bg_plane_sel = 0;
|
||||
return ret;
|
||||
}
|
||||
return ht216->ht_regs[svga->seqaddr & 0xff];
|
||||
} else
|
||||
@@ -463,6 +506,11 @@ ht216_remap(ht216_t *ht216)
|
||||
ht216->write_bank_reg[0] &= ~0x30;
|
||||
}
|
||||
|
||||
if (svga->chain4) {
|
||||
ht216->read_bank_reg[0] |= ht216->ht_regs[0xe8];
|
||||
ht216->write_bank_reg[0] |= ht216->ht_regs[0xe8];
|
||||
}
|
||||
|
||||
ht216->read_banks[0] = ht216->read_bank_reg[0] << 12;
|
||||
ht216->write_banks[0] = ht216->write_bank_reg[0] << 12;
|
||||
ht216->read_banks[1] = ht216->read_banks[0] + (svga->chain4 ? 0x8000 : 0x20000);
|
||||
@@ -473,7 +521,7 @@ ht216_remap(ht216_t *ht216)
|
||||
ht216->read_banks[1] >>= 2;
|
||||
ht216->write_banks[0] >>= 2;
|
||||
ht216->write_banks[1] >>= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ht216_log("ReadBank0 = %06x, ReadBank1 = %06x, Misc Page Sel = %02x, F6 reg = %02x, F9 Sel = %02x, FC = %02x, E0 split = %02x, E8 = %02x, E9 = %02x, chain4 = %02x, banked mask = %04x\n", ht216->read_banks[0], ht216->read_banks[1], ht216->misc & HT_MISC_PAGE_SEL, bank, ht216->ht_regs[0xf9] & HT_REG_F9_XPSEL, ht216->ht_regs[0xfc] & (HT_REG_FC_ECOLRE | 2), ht216->ht_regs[0xe0] & HT_REG_E0_SBAE, ht216->ht_regs[0xe8], ht216->ht_regs[0xe9], svga->chain4, svga->banked_mask);
|
||||
@@ -651,7 +699,7 @@ ht216_dm_write(ht216_t *ht216, uint32_t addr, uint8_t cpu_dat, uint8_t cpu_dat_u
|
||||
case 0x08:
|
||||
case 0x0c:
|
||||
for (i = 0; i < count; i++)
|
||||
fg_data[i] = ht216->ht_regs[0xec + i];
|
||||
fg_data[i] = ht216->fg_latch[i];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -805,7 +853,7 @@ ht216_dm_extalu_write(ht216_t *ht216, uint32_t addr, uint8_t cpu_dat, uint8_t bi
|
||||
input_a = (ht216->ht_regs[0xf5] & (1 << ((addr & 7) ^ 7))) ? ht216->ht_regs[0xfa] : ht216->ht_regs[0xfb];
|
||||
break;
|
||||
case 0x08:
|
||||
input_a = ht216->ht_regs[0xec + (addr & 3)];
|
||||
input_a = ht216->fg_latch[addr & 3];
|
||||
break;
|
||||
case 0x0c:
|
||||
input_a = ht216->bg_latch[addr & 7];
|
||||
@@ -1128,6 +1176,7 @@ ht216_read_common(ht216_t *ht216, uint32_t addr)
|
||||
or = addr & 4;
|
||||
svga->latch.d[0] = ht216->bg_latch[0 | or] | (ht216->bg_latch[1 | or] << 8) |
|
||||
(ht216->bg_latch[2 | or] << 16) | (ht216->bg_latch[3 | or] << 24);
|
||||
|
||||
if (svga->readmode) {
|
||||
temp = 0xff;
|
||||
|
||||
@@ -1173,7 +1222,6 @@ ht216_read_linear(uint32_t addr, void *p)
|
||||
return ht216_read_common(ht216, (addr & 0xffff) | ((addr & 0xc0000) >> 2));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
*ht216_init(const device_t *info, uint32_t mem_size, int has_rom)
|
||||
{
|
||||
@@ -1354,7 +1402,7 @@ const device_t g2_gc205_device =
|
||||
|
||||
const device_t v7_vga_1024i_device =
|
||||
{
|
||||
"Video 7 VGA 1024i",
|
||||
"Video 7 VGA 1024i (HT208)",
|
||||
DEVICE_ISA,
|
||||
0x7140,
|
||||
v7_vga_1024i_init,
|
||||
|
Reference in New Issue
Block a user