Previous 199869 Revisions Next

r32524 Saturday 4th October, 2014 at 07:58:42 UTC by Barry Rodewald
trident: hopefully found the clock divider bit used by the BIOS, refresh rates should now be pretty correct.
[src/emu/bus/isa]trident.c trident.h

trunk/src/emu/bus/isa/trident.c
r32523r32524
173173   save_pointer(vga.sequencer.data,"Sequencer Registers",0x100);
174174   save_pointer(vga.attribute.data,"Attribute Registers", 0x15);
175175   save_pointer(tri.accel_pattern,"Pattern Data", 0x80);
176   save_pointer(tri.lutdac_reg,"LUTDAC registers", 0x100);
176177
177178   m_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vga_device::vblank_timer_cb),this));
178179   vga.svga_intf.seq_regcount = 0x0f;
r32523r32524
371372   case 0:
372373   default: xtal = XTAL_25_1748MHz; break;
373374   case 1:  xtal = XTAL_28_63636MHz; break;
374   case 2:  xtal = calculate_clock(); break; // how to divide the clock?  Needed for higher refresh rates (75Hz+)
375   case 2:  xtal = calculate_clock(); break;
375376   }
376377
378   if(tri.gc0f & 0x08)  // 16 pixels per character clock
379      xtal = xtal / 2;
377380
381   if(tri.port_3db & 0x20)
382      xtal = xtal / 2;  // correct?
383
378384   svga.rgb8_en = svga.rgb15_en = svga.rgb16_en = svga.rgb32_en = 0;
379385   switch((tri.pixel_depth & 0x0c) >> 2)
380386   {
r32523r32524
438444
439445void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data)
440446{
447   vga.sequencer.data[vga.sequencer.index] = data;
441448   if(index <= 0x04)
442449   {
443      vga.sequencer.data[vga.sequencer.index] = data;
444450      seq_reg_write(vga.sequencer.index,data);
445451      recompute_params();
446452   }
r32523r32524
745751         break;
746752      case 0x0f:
747753         tri.gc0f = data;
754         trident_define_video_mode();
748755         break;
749756      case 0x2f:  // XFree86 refers to this register as "MiscIntContReg", setting bit 2, but gives no indication as to what it does
750757         tri.gc2f = data;
r32523r32524
855862            else
856863               res = 0xff;
857864            break;
865         case 11:
866            res = tri.port_3db;
867            break;
858868         default:
859869            res = vga_device::port_03d0_r(space,offset,mem_mask);
860870            break;
r32523r32524
896906               }
897907            }
898908            break;
909         case 11:
910            tri.port_3db = data;  // no info on this port?  Bit 5 appears to be a clock divider...
911            break;
899912         default:
900913            vga_device::port_03d0_w(space,offset,data,mem_mask);
901914            break;
trunk/src/emu/bus/isa/trident.h
r32523r32524
6060      UINT8 lutdac_index;
6161      bool new_mode;
6262      bool port_3c3;
63      UINT8 port_3db;
6364      UINT8 clock;
6465      UINT8 pixel_depth;
6566      UINT8 revision;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team