mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
iteagle -- Organize bios for iteagle 1 boards (virtual pool).
voodoo_pci -- Fixed voodoo_1 pci initialization.
This commit is contained in:
parent
4587bb0369
commit
67a7c86c94
@ -51,6 +51,11 @@ machine_config_constructor voodoo_pci_device::device_mconfig_additions() const
|
||||
|
||||
const device_type VOODOO_PCI = &device_creator<voodoo_pci_device>;
|
||||
|
||||
DEVICE_ADDRESS_MAP_START(config_map, 32, voodoo_pci_device)
|
||||
AM_RANGE(0x40, 0x4f) AM_READWRITE (pcictrl_r, pcictrl_w)
|
||||
AM_INHERIT_FROM(pci_device::config_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
DEVICE_ADDRESS_MAP_START(voodoo_reg_map, 32, voodoo_pci_device)
|
||||
AM_RANGE(0x0, 0x00ffffff) AM_DEVREADWRITE("voodoo", voodoo_device, voodoo_r, voodoo_w)
|
||||
ADDRESS_MAP_END
|
||||
@ -83,11 +88,12 @@ void voodoo_pci_device::device_start()
|
||||
voodoo_device::static_set_fbmem(m_voodoo, m_fbmem);
|
||||
voodoo_device::static_set_tmumem(m_voodoo, m_tmumem0, m_tmumem1);
|
||||
switch (m_type) {
|
||||
//void set_ids(UINT32 main_id, UINT8 revision, UINT32 pclass, UINT32 subsystem_id);
|
||||
case TYPE_VOODOO_1:
|
||||
set_ids(0x121a0001, 0x02, 0x000003, 0x000000);
|
||||
set_ids(0x121a0001, 0x02, 0x000000, 0x000000);
|
||||
break;
|
||||
case TYPE_VOODOO_2:
|
||||
set_ids(0x121a0002, 0x02, 0x000003, 0x000000);
|
||||
set_ids(0x121a0002, 0x02, 0x040000, 0x000000);
|
||||
break;
|
||||
case TYPE_VOODOO_BANSHEE:
|
||||
set_ids(0x121a0003, 0x02, 0x000003, 0x000000);
|
||||
@ -109,6 +115,7 @@ void voodoo_pci_device::device_start()
|
||||
|
||||
void voodoo_pci_device::device_reset()
|
||||
{
|
||||
memset(m_pcictrl_reg, 0, sizeof(m_pcictrl_reg));
|
||||
pci_device::device_reset();
|
||||
}
|
||||
|
||||
@ -148,3 +155,26 @@ UINT32 voodoo_pci_device::screen_update(screen_device &screen, bitmap_rgb32 &bit
|
||||
{
|
||||
return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
|
||||
}
|
||||
|
||||
// PCI bus control
|
||||
READ32_MEMBER (voodoo_pci_device::pcictrl_r)
|
||||
{
|
||||
UINT32 result = m_pcictrl_reg[offset];
|
||||
if (1)
|
||||
logerror("%06X:voodoo_pci_device pcictrl_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
|
||||
return result;
|
||||
}
|
||||
WRITE32_MEMBER (voodoo_pci_device::pcictrl_w)
|
||||
{
|
||||
COMBINE_DATA(&m_pcictrl_reg[offset]);
|
||||
switch (offset) {
|
||||
case 0x0/4: // The address map starts at 0x40
|
||||
// HW initEnable
|
||||
voodoo_set_init_enable(m_voodoo, data);
|
||||
logerror("%06X:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
|
||||
break;
|
||||
default:
|
||||
logerror("%06X:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -27,12 +27,16 @@ public:
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
virtual DECLARE_ADDRESS_MAP(config_map, 32);
|
||||
|
||||
void set_cpu_tag(const char *tag);
|
||||
static void set_type(const int type) {m_type = type;}
|
||||
void set_fbmem(const int fbmem) {m_fbmem = fbmem;}
|
||||
void set_tmumem(const int tmumem0, const int tmumem1) {m_tmumem0 = tmumem0; m_tmumem1 = tmumem1;}
|
||||
|
||||
DECLARE_READ32_MEMBER( pcictrl_r);
|
||||
DECLARE_WRITE32_MEMBER( pcictrl_w);
|
||||
|
||||
protected:
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
@ -43,6 +47,7 @@ private:
|
||||
int m_fbmem, m_tmumem0, m_tmumem1;
|
||||
const char *m_cpu_tag;
|
||||
|
||||
UINT32 m_pcictrl_reg[0x10];
|
||||
DECLARE_ADDRESS_MAP(voodoo_reg_map, 32);
|
||||
DECLARE_ADDRESS_MAP(banshee_reg_map, 32);
|
||||
DECLARE_ADDRESS_MAP(lfb_map, 32);
|
||||
|
@ -34,19 +34,23 @@
|
||||
* Creative/Ensoniq AudioPCI ES1373 audio
|
||||
* Atmel 90S2313 AVR-based microcontroller for protection
|
||||
* STM48T02 NVRAM
|
||||
* AMD AM85C30 Enhanced Serial Communications Controller
|
||||
* Conexant CX88168 modem
|
||||
Eagle 1 Notes:
|
||||
* Cypress CY82C693 Peripheral Controller
|
||||
* 3DFX Voodoo 1 video
|
||||
|
||||
TODO:
|
||||
* Add support for Eagle 1 (Virtual Pool) PCBs
|
||||
* Add support for later RED boards
|
||||
* Add support for later RED boards
|
||||
|
||||
Notes:
|
||||
Sound volume may be muted, it can be adjusted through the service menu or with volume up/down buttons (+/-)
|
||||
Notes:
|
||||
Sound volume may be muted, it can be adjusted through the service menu or with volume up/down buttons (+/-)
|
||||
|
||||
The PCB for Virtual Pool is considered "Eagle 1" while the boards
|
||||
that were production runs for later games are considered Eagle 2.
|
||||
IE: GT Fore! & BBH, both security chips are "E2-" as are various
|
||||
preprogrammed PALs: E2-CARD1 & E2-RES3
|
||||
The PCB for Virtual Pool is considered "Eagle 1" while the boards
|
||||
that were production runs for later games are considered Eagle 2.
|
||||
IE: GT Fore! & BBH, both security chips are "E2-" as are various
|
||||
preprogrammed PALs: E2-CARD1 & E2-RES3
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -339,8 +343,6 @@ INPUT_PORTS_END
|
||||
ROMX_LOAD( "eagle102.u15", 0x000000, 0x100000, CRC(1fd39e73) SHA1(d1ac758f94defc5c55c62594b3999a406dd9ef1f), ROM_BIOS(10) ) \
|
||||
ROM_SYSTEM_BIOS( 10, "101", "bootrom 1.01" ) \
|
||||
ROMX_LOAD( "eagle101.u15", 0x000000, 0x100000, CRC(2600bc2b) SHA1(c4b89e69c51e4a3bb1874407c4d30b6caed4f396), ROM_BIOS(11) ) \
|
||||
ROM_SYSTEM_BIOS( 11, "pool", "Virtual Pool bootrom" ) \
|
||||
ROMX_LOAD( "eagle1_bootrom_v1p01", 0x000000, 0x080000, CRC(6c8c1593) SHA1(707d5633388f8dd4e9252f4d8d6f27c98c2cb35a), ROM_BIOS(12) ) \
|
||||
ROM_REGION( 0x30000, "fpga", 0 ) \
|
||||
ROM_LOAD( "17s20lpc_sb4.u26", 0x000000, 0x008000, CRC(62c4af8a) SHA1(6eca277b9c66a401990599e98fdca64a9e38cc9a) ) \
|
||||
ROM_LOAD( "17s20lpc_sb5.u26", 0x008000, 0x008000, CRC(c88b9d42) SHA1(b912d0fc50ecdc6a198c626f6e1644e8405fac6e) ) \
|
||||
@ -358,7 +360,9 @@ ROM_START( iteagle )
|
||||
ROM_END
|
||||
|
||||
ROM_START( virtpool ) /* On earlier Eagle 1 PCB, possibly a prototype version - later boards are known as Eagle 2 */
|
||||
EAGLE_BIOS
|
||||
ROM_REGION( 0x100000, ":pci:00.0", 0 ) /* MIPS code */
|
||||
ROM_SYSTEM_BIOS( 0, "pool", "Virtual Pool bootrom" )
|
||||
ROMX_LOAD( "eagle1_bootrom_v1p01", 0x000000, 0x080000, CRC(6c8c1593) SHA1(707d5633388f8dd4e9252f4d8d6f27c98c2cb35a), ROM_BIOS(1) )
|
||||
|
||||
ROM_REGION( 0x0880, "atmel", 0 ) /* Atmel 90S2313 AVR internal CPU code */
|
||||
ROM_LOAD( "itvp-1.u53", 0x0000, 0x0880, NO_DUMP )
|
||||
|
@ -131,11 +131,11 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r )
|
||||
if (LOG_FPGA && m_prev_reg!=offset)
|
||||
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
break;
|
||||
case 0x0c/4: // 1d = modem byte
|
||||
result = (result & 0xFFFF0000) | 0x2c2c;
|
||||
if (LOG_FPGA)
|
||||
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
break;
|
||||
// case 0x0c/4: // 1d = modem byte
|
||||
// result = (result & 0xFFFF0000) | 0x2c2c;
|
||||
// if (LOG_FPGA)
|
||||
// logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
// break;
|
||||
case 0x14/4: // Interrupt & 0x4==0x00080000
|
||||
result = 0x00000000;
|
||||
if (LOG_FPGA)
|
||||
@ -146,6 +146,7 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r )
|
||||
if (LOG_FPGA)
|
||||
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
break;
|
||||
case 0x0c/4: // 1d = modem byte
|
||||
case 0x1c/4: // 1d = modem byte
|
||||
result = (result & 0xFFFF0000) | ((m_serial_reg1d[m_serial_idx]&0xff)<<8) | (m_serial_reg1c[m_serial_idx]&0xff);
|
||||
if (ACCESSING_BITS_0_15) {
|
||||
@ -200,6 +201,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (LOG_FPGA)
|
||||
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
|
||||
break;
|
||||
case 0x0c/4:
|
||||
case 0x1c/4:
|
||||
if (ACCESSING_BITS_0_7) {
|
||||
if (!m_serial_data) {
|
||||
|
@ -23,6 +23,7 @@
|
||||
#define MCFG_ITEAGLE_EEPROM_INIT(_sw_version, _hw_version) \
|
||||
downcast<iteagle_eeprom_device *>(device)->set_info(_sw_version, _hw_version);
|
||||
|
||||
// Mimic Cypress CY82C693 Peripheral Controller
|
||||
#define MCFG_ITEAGLE_IDE_ADD(_tag) \
|
||||
MCFG_PCI_DEVICE_ADD(_tag, ITEAGLE_IDE, 0x1080C693, 0x00, 0x060100, 0x00)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user