CGA-class cards mirror CRTC between ports 3d0 and 3d7. Fixes scrolling
in Prohibition.
This commit is contained in:
parent
5fb1e464f0
commit
c82cd208c1
4 changed files with 8 additions and 8 deletions
|
|
@ -28,10 +28,10 @@ void cga_out(uint16_t addr, uint8_t val, void *p)
|
||||||
// pclog("CGA_OUT %04X %02X\n", addr, val);
|
// pclog("CGA_OUT %04X %02X\n", addr, val);
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x3D4:
|
case 0x3d0: case 0x3d2: case 0x3d4: case 0x3d6:
|
||||||
cga->crtcreg = val & 31;
|
cga->crtcreg = val & 31;
|
||||||
return;
|
return;
|
||||||
case 0x3D5:
|
case 0x3d1: case 0x3d3: case 0x3d5: case 0x3d7:
|
||||||
old = cga->crtc[cga->crtcreg];
|
old = cga->crtc[cga->crtcreg];
|
||||||
cga->crtc[cga->crtcreg] = val & crtcmask[cga->crtcreg];
|
cga->crtc[cga->crtcreg] = val & crtcmask[cga->crtcreg];
|
||||||
if (old != val)
|
if (old != val)
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,10 @@ static void pc1512_out(uint16_t addr, uint8_t val, void *p)
|
||||||
// pclog("PC1512 out %04X %02X %04X:%04X\n",addr,val,CS,pc);
|
// pclog("PC1512 out %04X %02X %04X:%04X\n",addr,val,CS,pc);
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x3d4:
|
case 0x3d0: case 0x3d2: case 0x3d4: case 0x3d6:
|
||||||
pc1512->crtcreg = val & 31;
|
pc1512->crtcreg = val & 31;
|
||||||
return;
|
return;
|
||||||
case 0x3d5:
|
case 0x3d1: case 0x3d3: case 0x3d5: case 0x3d7:
|
||||||
old = pc1512->crtc[pc1512->crtcreg];
|
old = pc1512->crtc[pc1512->crtcreg];
|
||||||
pc1512->crtc[pc1512->crtcreg] = val & crtcmask[pc1512->crtcreg];
|
pc1512->crtc[pc1512->crtcreg] = val & crtcmask[pc1512->crtcreg];
|
||||||
if (old != val)
|
if (old != val)
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,10 @@ void tandy_out(uint16_t addr, uint8_t val, void *p)
|
||||||
// pclog("Tandy OUT %04X %02X\n",addr,val);
|
// pclog("Tandy OUT %04X %02X\n",addr,val);
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x3d4:
|
case 0x3d0: case 0x3d2: case 0x3d4: case 0x3d6:
|
||||||
tandy->crtcreg = val & 0x1f;
|
tandy->crtcreg = val & 0x1f;
|
||||||
return;
|
return;
|
||||||
case 0x3d5:
|
case 0x3d1: case 0x3d3: case 0x3d5: case 0x3d7:
|
||||||
old = tandy->crtc[tandy->crtcreg];
|
old = tandy->crtc[tandy->crtcreg];
|
||||||
tandy->crtc[tandy->crtcreg] = val & crtcmask[tandy->crtcreg];
|
tandy->crtc[tandy->crtcreg] = val & crtcmask[tandy->crtcreg];
|
||||||
if (old != val)
|
if (old != val)
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,10 @@ static void tandysl_out(uint16_t addr, uint8_t val, void *p)
|
||||||
// pclog("TandySL OUT %04X %02X\n",addr,val);
|
// pclog("TandySL OUT %04X %02X\n",addr,val);
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x3d4:
|
case 0x3d0: case 0x3d2: case 0x3d4: case 0x3d6:
|
||||||
tandy->crtcreg = val & 0x1f;
|
tandy->crtcreg = val & 0x1f;
|
||||||
return;
|
return;
|
||||||
case 0x3d5:
|
case 0x3d1: case 0x3d3: case 0x3d5: case 0x3d7:
|
||||||
// pclog("Write CRTC R%02x %02x ",tandy->crtcreg, val);
|
// pclog("Write CRTC R%02x %02x ",tandy->crtcreg, val);
|
||||||
old = tandy->crtc[tandy->crtcreg];
|
old = tandy->crtc[tandy->crtcreg];
|
||||||
tandy->crtc[tandy->crtcreg] = val & crtcmask[tandy->crtcreg];
|
tandy->crtc[tandy->crtcreg] = val & crtcmask[tandy->crtcreg];
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue