trident: forced doubleword offset when using an SVGA video mode, fixes display in Eggs Playing Chicken.

This commit is contained in:
mahlemiut 2014-09-12 07:46:40 +00:00
parent c0210151a7
commit 51ca4087bc

View File

@ -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)