Applied all mainline commits; Moved all declarations to not be in the middle of code; SVGA linear reads and writes now account for linear base; Fixed a bug with the Compaq ATI 28800.

This commit is contained in:
OBattler
2016-08-01 19:14:54 +02:00
parent d50a7e9449
commit 114bbdfc6d
29 changed files with 305 additions and 171 deletions

View File

@@ -230,9 +230,9 @@ uint8_t incolor_in(uint16_t addr, void *p)
void incolor_write(uint32_t addr, uint8_t val, void *p)
{
incolor_t *incolor = (incolor_t *)p;
egawrites++;
int plane;
unsigned char wmask = incolor->crtc[INCOLOR_CRTC_MASK];
unsigned char wmode = incolor->crtc[INCOLOR_CRTC_RWCTRL] & INCOLOR_RWCTRL_WRMODE;
unsigned char fg = incolor->crtc[INCOLOR_CRTC_RWCOL] & 0x0F;
@@ -242,6 +242,8 @@ void incolor_write(uint32_t addr, uint8_t val, void *p)
unsigned char pmask; /* Mask of plane within colour value */
unsigned char latch;
egawrites++;
/* Horrible hack, I know, but it's the only way to fix the 440FX BIOS filling the VRAM with garbage until Tom fixes the memory emulation. */
if ((cs == 0xE0000) && (cpu_state.pc == 0xBF2F) && (romset == ROM_440FX)) return;
if ((cs == 0xE0000) && (cpu_state.pc == 0xBF77) && (romset == ROM_440FX)) return;
@@ -301,7 +303,6 @@ void incolor_write(uint32_t addr, uint8_t val, void *p)
uint8_t incolor_read(uint32_t addr, void *p)
{
incolor_t *incolor = (incolor_t *)p;
egareads++;
unsigned plane;
unsigned char lp = incolor->crtc[INCOLOR_CRTC_PROTECT];
unsigned char value = 0;
@@ -310,6 +311,8 @@ uint8_t incolor_read(uint32_t addr, void *p)
unsigned char fg;
unsigned char mask, pmask;
egareads++;
addr &= 0xFFFF;
/* Read the four planes into latches */
for (plane = 0; plane < 4; plane++, addr += 0x10000)