mirror of
https://github.com/holub/mame
synced 2025-04-27 10:43:07 +03:00
trident: forced doubleword offset when using an SVGA video mode, fixes display in Eggs Playing Chicken.
This commit is contained in:
parent
c0210151a7
commit
51ca4087bc
@ -38,7 +38,11 @@ void trident_vga_device::device_reset()
|
|||||||
UINT16 trident_vga_device::offset()
|
UINT16 trident_vga_device::offset()
|
||||||
{
|
{
|
||||||
UINT16 off = svga_device::offset();
|
UINT16 off = svga_device::offset();
|
||||||
return off;
|
|
||||||
|
if (svga.rgb8_en || svga.rgb15_en || svga.rgb16_en || svga.rgb32_en)
|
||||||
|
return vga.crtc.offset << 3; // don't know if this is right, but Eggs Playing Chicken switches off doubleword mode, but expects the same offset length
|
||||||
|
else
|
||||||
|
return off;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trident_vga_device::trident_define_video_mode()
|
void trident_vga_device::trident_define_video_mode()
|
||||||
@ -136,7 +140,6 @@ UINT8 trident_vga_device::trident_seq_reg_read(UINT8 index)
|
|||||||
|
|
||||||
void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data)
|
void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data)
|
||||||
{
|
{
|
||||||
//logerror("Trident SR%02X: %s mode write %02x\n",index,tri.new_mode ? "new" : "old",data);
|
|
||||||
if(index <= 0x04)
|
if(index <= 0x04)
|
||||||
{
|
{
|
||||||
vga.sequencer.data[vga.sequencer.index] = data;
|
vga.sequencer.data[vga.sequencer.index] = data;
|
||||||
@ -145,6 +148,7 @@ void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
logerror("Trident SR%02X: %s mode write %02x\n",index,tri.new_mode ? "new" : "old",data);
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case 0x0b:
|
case 0x0b:
|
||||||
@ -217,7 +221,6 @@ UINT8 trident_vga_device::trident_crtc_reg_read(UINT8 index)
|
|||||||
}
|
}
|
||||||
void trident_vga_device::trident_crtc_reg_write(UINT8 index, UINT8 data)
|
void trident_vga_device::trident_crtc_reg_write(UINT8 index, UINT8 data)
|
||||||
{
|
{
|
||||||
//logerror("Trident CR%02X: write %02x\n",index,data);
|
|
||||||
if(index <= 0x18)
|
if(index <= 0x18)
|
||||||
{
|
{
|
||||||
crtc_reg_write(index,data);
|
crtc_reg_write(index,data);
|
||||||
@ -225,6 +228,7 @@ void trident_vga_device::trident_crtc_reg_write(UINT8 index, UINT8 data)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
logerror("Trident CR%02X: write %02x\n",index,data);
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case 0x1f:
|
case 0x1f:
|
||||||
@ -267,11 +271,11 @@ UINT8 trident_vga_device::trident_gc_reg_read(UINT8 index)
|
|||||||
|
|
||||||
void trident_vga_device::trident_gc_reg_write(UINT8 index, UINT8 data)
|
void trident_vga_device::trident_gc_reg_write(UINT8 index, UINT8 data)
|
||||||
{
|
{
|
||||||
//logerror("Trident GC%02X: write %02x\n",index,data);
|
|
||||||
if(index <= 0x0d)
|
if(index <= 0x0d)
|
||||||
gc_reg_write(index,data);
|
gc_reg_write(index,data);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
logerror("Trident GC%02X: write %02x\n",index,data);
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case 0x0e: // New Source Address Register (bit 1 is inverted here, also)
|
case 0x0e: // New Source Address Register (bit 1 is inverted here, also)
|
||||||
|
Loading…
Reference in New Issue
Block a user