trunk/src/emu/bus/isa/svga_trident.c
| r32516 | r32517 | |
| 60 | 60 | //------------------------------------------------- |
| 61 | 61 | |
| 62 | 62 | isa8_svga_tgui9680_device::isa8_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : |
| 63 | | device_t(mconfig, ISA8_SVGA_TGUI9680, "Trident TGUI9680 Graphics Card", tag, owner, clock, "tgui9680", __FILE__), |
| 63 | device_t(mconfig, ISA8_SVGA_TGUI9680, "Trident TGUI9680 Graphics Card (BIOS X5.5 (02) 02/13/96)", tag, owner, clock, "tgui9680", __FILE__), |
| 64 | 64 | device_isa8_card_interface(mconfig, *this) |
| 65 | 65 | { |
| 66 | 66 | } |
| r32516 | r32517 | |
| 89 | 89 | // uncomment to test Windows 3.1 TGUI9440AGi driver |
| 90 | 90 | // m_isa->install_memory(0x4400000, 0x45fffff, 0, 0, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga)); |
| 91 | 91 | |
| 92 | // win95 drivers |
| 93 | m_isa->install_memory(0x4000000, 0x41fffff, 0, 0, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga)); |
| 94 | |
| 92 | 95 | // acceleration ports |
| 93 | 96 | m_isa->install_device(0x2120, 0x21ff, 0, 0, read8_delegate(FUNC(trident_vga_device::accel_r),m_vga), write8_delegate(FUNC(trident_vga_device::accel_w),m_vga)); |
| 94 | 97 | } |
trunk/src/emu/bus/isa/trident.c
| r32516 | r32517 | |
| 346 | 346 | case 3: xtal = xtal / 1.5; break; |
| 347 | 347 | } |
| 348 | 348 | |
| 349 | | // TODO: determine when 8 bit modes are selected |
| 350 | 349 | svga.rgb8_en = svga.rgb15_en = svga.rgb16_en = svga.rgb32_en = 0; |
| 351 | 350 | switch((tri.pixel_depth & 0x0c) >> 2) |
| 352 | 351 | { |
| r32516 | r32517 | |
| 377 | 376 | case 0x0b: |
| 378 | 377 | res = svga.id; |
| 379 | 378 | tri.new_mode = true; |
| 380 | | //debugger_break(machine()); |
| 381 | 379 | break; |
| 382 | 380 | case 0x0c: // Power Up Mode register 1 |
| 383 | 381 | res = tri.sr0c & 0xef; |
| r32516 | r32517 | |
| 932 | 930 | } |
| 933 | 931 | } |
| 934 | 932 | |
| 933 | // Trident refers to these registers as a LUTDAC |
| 934 | // Not much else is known. XFree86 uses register 4 for something related to DPMS |
| 935 | 935 | READ8_MEMBER(trident_vga_device::port_83c6_r) |
| 936 | 936 | { |
| 937 | 937 | UINT8 res = 0xff; |
| 938 | 938 | switch(offset) |
| 939 | 939 | { |
| 940 | 940 | case 2: |
| 941 | | res = port_03c0_r(space,5,mem_mask); |
| 942 | | if(LOG) logerror("Trident: 83c6 read %02x\n",res); |
| 941 | res = tri.lutdac_reg[tri.lutdac_index]; |
| 942 | if(LOG) logerror("Trident: LUTDAC reg read %02x\n",res); |
| 943 | 943 | break; |
| 944 | 944 | case 4: |
| 945 | | res = vga.sequencer.index; |
| 946 | | if(LOG) logerror("Trident: 83c8 seq read %02x\n",res); |
| 945 | res = tri.lutdac_index; |
| 946 | if(LOG) logerror("Trident: LUTDAC index read %02x\n",res); |
| 947 | 947 | break; |
| 948 | 948 | } |
| 949 | 949 | return res; |
| r32516 | r32517 | |
| 954 | 954 | switch(offset) |
| 955 | 955 | { |
| 956 | 956 | case 2: |
| 957 | | if(LOG) logerror("Trident: 83c6 seq write %02x\n",data); |
| 958 | | port_03c0_w(space,5,data,mem_mask); |
| 957 | if(LOG) logerror("Trident: LUTDAC reg write %02x\n",data); |
| 958 | tri.lutdac_reg[tri.lutdac_index] = data; |
| 959 | 959 | break; |
| 960 | 960 | case 4: |
| 961 | | if(LOG) logerror("Trident: 83c8 seq index write %02x\n",data); |
| 962 | | vga.sequencer.index = data; |
| 961 | if(LOG) logerror("Trident: LUTDAC index write %02x\n",data); |
| 962 | tri.lutdac_index = data; |
| 963 | 963 | break; |
| 964 | 964 | } |
| 965 | 965 | } |