diff --git a/src/piix.c b/src/piix.c index 671d949eb..d4af9b4f1 100644 --- a/src/piix.c +++ b/src/piix.c @@ -27,12 +27,13 @@ static uint8_t card_piix[256], card_piix_ide[256]; void piix_write(int func, int addr, uint8_t val, void *priv) { uint16_t old_base = (card_piix_ide[0x20] & 0xf0) | (card_piix_ide[0x21] << 8); -// pclog("piix_write: func=%d addr=%02x val=%02x %04x:%08x\n", func, addr, val, CS, pc); +// pclog("piix_write: func=%d addr=%02x val=%02x %04x:%08x\n", func, addr, val, CS, cpu_state.pc); if (func > 1) return; if (func == 1) /*IDE*/ { + // pclog("piix_write (IDE): func=%d addr=%02x val=%02x %04x:%08x\n", func, addr, val, CS, cpu_state.pc); switch (addr) { case 0x04: diff --git a/src/vid_nv_riva128.c b/src/vid_nv_riva128.c index a192f5c32..830aef39e 100644 --- a/src/vid_nv_riva128.c +++ b/src/vid_nv_riva128.c @@ -518,7 +518,7 @@ static uint8_t riva128_pfifo_read(uint32_t addr, void *p) svga_t *svga = &riva128->svga; uint8_t ret = 0; - pclog("RIVA 128 PFIFO read %08X %04X:%08X\n", addr, CS, cpu_state.pc); + // pclog("RIVA 128 PFIFO read %08X %04X:%08X\n", addr, CS, cpu_state.pc); switch(addr) { @@ -646,7 +646,7 @@ static void riva128_pfifo_write(uint32_t addr, uint32_t val, void *p) { riva128_t *riva128 = (riva128_t *)p; svga_t *svga = &riva128->svga; - pclog("RIVA 128 PFIFO write %08X %08X %04X:%08X\n", addr, val, CS, cpu_state.pc); + // pclog("RIVA 128 PFIFO write %08X %08X %04X:%08X\n", addr, val, CS, cpu_state.pc); switch(addr) { @@ -1734,8 +1734,8 @@ static uint8_t riva128_mmio_read(uint32_t addr, void *p) addr &= 0xffffff; - //This logging condition is necessary to prevent A CATASTROPHIC LOG BLOWUP when polling PTIMER. DO NOT REMOVE. - if(!((addr >= 0x009000) && (addr <= 0x009fff))) pclog("RIVA 128 MMIO read %08X %04X:%08X\n", addr, CS, cpu_state.pc); + //This logging condition is necessary to prevent A CATASTROPHIC LOG BLOWUP when polling PTIMER or PFIFO. DO NOT REMOVE. + if(!((addr >= 0x009000) && (addr <= 0x009fff)) && !((addr >= 0x002000) && (addr <- 0x003fff))) pclog("RIVA 128 MMIO read %08X %04X:%08X\n", addr, CS, cpu_state.pc); switch(addr) { diff --git a/src/vid_svga.c b/src/vid_svga.c index ad6a5411c..7aabec6f6 100644 --- a/src/vid_svga.c +++ b/src/vid_svga.c @@ -382,19 +382,23 @@ uint8_t svga_in(uint16_t addr, void *p) case 0x3C1: return svga->attrregs[svga->attraddr]; case 0x3c2: -#if 0 - if ((svga->vgapal[0].r + svga->vgapal[0].g + svga->vgapal[0].b) >= 0x50) - temp = 0; - else - temp = 0x10; -#endif - if (svga_get_input_status_0_ss(svga)) + if (gfxcard == GFX_RIVA128) { - temp |= 0x10; + if ((svga->vgapal[0].r + svga->vgapal[0].g + svga->vgapal[0].b) >= 0x4e) + temp = 0; + else + temp = 0x10; } else { - temp &= ~0x10; + if (svga_get_input_status_0_ss(svga)) + { + temp |= 0x10; + } + else + { + temp &= ~0x10; + } } return temp; case 0x3C4: @@ -966,6 +970,8 @@ int svga_init(svga_t *svga, void *p, int memsize, mem_mapping_add(&svga->mapping, 0xa0000, 0x20000, svga_read, svga_readw, svga_readl, svga_write, svga_writew, svga_writel, NULL, 0, svga); + memset(svga->vgapal, 0, sizeof(PALETTE)); + timer_add(svga_poll, &svga->vidtime, TIMER_ALWAYS_ENABLED, svga); svga_pri = svga;