diff options
Diffstat (limited to 'src/devices/bus/pci/promotion.cpp')
-rw-r--r-- | src/devices/bus/pci/promotion.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/devices/bus/pci/promotion.cpp b/src/devices/bus/pci/promotion.cpp index 1b0bb17a68b..68396af870b 100644 --- a/src/devices/bus/pci/promotion.cpp +++ b/src/devices/bus/pci/promotion.cpp @@ -4,12 +4,18 @@ Alliance Semiconductor ProMotion family +- aT3D is the 2d base of 3dfx Voodoo Rush on Hercules Stingray 128/3D cards at least + (thru THP i/f, reportedly slow) +- On its own aT3D is infamously known to be a terrible 3D card + cfr. https://www.youtube.com/watch?v=vCz-rSlSREA + TODO: - Requires own family of VGA based devices; - Catch is that said device mirrors the PCI space in memory mapped regs, along with the (more or less) typical SVGA regs of the mid-90s; - Black screens when mounted; -- Bare documentation, covering pinout and register names only; +- Bare documentation, covering pinout and register names only. aT3D datasheet available for +crosschecking; **************************************************************************************************/ @@ -31,7 +37,7 @@ DEFINE_DEVICE_TYPE(PROMOTION3210, promotion3210_device, "promotion3210", " //DEFINE_DEVICE_TYPE(PROMOTION6424, promotion6424_device, "promotion6424", "Alliance Semiconductor ProMotion 6424") // Alias of above? //DEFINE_DEVICE_TYPE(PROMOTIONAT24, promotionat24_device, "promotionat24", "Alliance Semiconductor ProMotion aT24") -//DEFINE_DEVICE_TYPE(PROMOTIONAT3D, promotionat3d_device, "promotionat3d", "Alliance Semiconductor ProMotion aT3d") +//DEFINE_DEVICE_TYPE(PROMOTIONAT3D, promotionat3d_device, "promotionat3d", "Alliance Semiconductor ProMotion aT3D") //DEFINE_DEVICE_TYPE(PROMOTIONAT25, promotionat25_device, "promotionat25", "Alliance Semiconductor ProMotion aT25") @@ -67,10 +73,11 @@ void promotion3210_device::device_add_mconfig(machine_config &config) screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); screen.set_screen_update(m_vga, FUNC(vga_device::screen_update)); - VGA(config, m_vga, 0); + PROMOTION_VGA(config, m_vga, 0); m_vga->set_screen("screen"); // TODO: configurable between 1 and 4 MB (2x EDO slots on board) - m_vga->set_vram_size(4*1024*1024); + // Only known OEM Board (Miro) has 1MB + m_vga->set_vram_size(1*1024*1024); // AT&T ATT20C408-13 PrecisionDAC // Reused by ATI Mach64? @@ -96,6 +103,7 @@ void promotion3210_device::device_reset() // TODO: to be checked command = 0x0000; status = 0x0000; + command_mask = 0x23; remap_cb(); } @@ -135,7 +143,7 @@ void promotion3210_device::vram_w(offs_t offset, uint8_t data) void promotion3210_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space, uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) { -// if (1) +// if (1) { memory_space->install_readwrite_handler(0xa0000, 0xbffff, read8sm_delegate(*this, FUNC(promotion3210_device::vram_r)), write8sm_delegate(*this, FUNC(promotion3210_device::vram_w))); |