summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pci/promotion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/pci/promotion.cpp')
-rw-r--r--src/devices/bus/pci/promotion.cpp18
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)));