mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
viper: unknown serial device at 0xff300000 (nw)
This commit is contained in:
parent
26b1bd7acb
commit
2c764cad88
@ -385,6 +385,11 @@ public:
|
|||||||
int m_cf_card_ide;
|
int m_cf_card_ide;
|
||||||
int m_unk1_bit;
|
int m_unk1_bit;
|
||||||
UINT32 m_voodoo3_pci_reg[0x100];
|
UINT32 m_voodoo3_pci_reg[0x100];
|
||||||
|
int m_unk_serial_bit_w;
|
||||||
|
UINT16 m_unk_serial_cmd;
|
||||||
|
UINT16 m_unk_serial_data;
|
||||||
|
UINT16 m_unk_serial_data_r;
|
||||||
|
UINT8 m_unk_serial_regs[0x80];
|
||||||
|
|
||||||
DECLARE_READ32_MEMBER(epic_r);
|
DECLARE_READ32_MEMBER(epic_r);
|
||||||
DECLARE_WRITE32_MEMBER(epic_w);
|
DECLARE_WRITE32_MEMBER(epic_w);
|
||||||
@ -413,9 +418,12 @@ public:
|
|||||||
DECLARE_WRITE64_MEMBER(cf_card_w);
|
DECLARE_WRITE64_MEMBER(cf_card_w);
|
||||||
DECLARE_READ64_MEMBER(ata_r);
|
DECLARE_READ64_MEMBER(ata_r);
|
||||||
DECLARE_WRITE64_MEMBER(ata_w);
|
DECLARE_WRITE64_MEMBER(ata_w);
|
||||||
|
DECLARE_READ64_MEMBER(unk_serial_r);
|
||||||
|
DECLARE_WRITE64_MEMBER(unk_serial_w);
|
||||||
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank);
|
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank);
|
||||||
DECLARE_DRIVER_INIT(viper);
|
DECLARE_DRIVER_INIT(viper);
|
||||||
DECLARE_DRIVER_INIT(vipercf);
|
DECLARE_DRIVER_INIT(vipercf);
|
||||||
|
DECLARE_DRIVER_INIT(viperhd);
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
UINT32 screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
@ -1970,6 +1978,68 @@ READ64_MEMBER(viper_state::e00000_r)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
READ64_MEMBER(viper_state::unk_serial_r)
|
||||||
|
{
|
||||||
|
UINT64 r = 0;
|
||||||
|
if (ACCESSING_BITS_16_31)
|
||||||
|
{
|
||||||
|
int bit = m_unk_serial_data_r & 0x1;
|
||||||
|
m_unk_serial_data_r >>= 1;
|
||||||
|
r |= bit << 17;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE64_MEMBER(viper_state::unk_serial_w)
|
||||||
|
{
|
||||||
|
if (ACCESSING_BITS_16_31)
|
||||||
|
{
|
||||||
|
if (data & 0x10000)
|
||||||
|
{
|
||||||
|
int bit = (data & 0x20000) ? 1 : 0;
|
||||||
|
if (m_unk_serial_bit_w < 8)
|
||||||
|
{
|
||||||
|
if (m_unk_serial_bit_w > 0)
|
||||||
|
m_unk_serial_cmd <<= 1;
|
||||||
|
m_unk_serial_cmd |= bit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_unk_serial_bit_w > 8)
|
||||||
|
m_unk_serial_data <<= 1;
|
||||||
|
m_unk_serial_data |= bit;
|
||||||
|
}
|
||||||
|
m_unk_serial_bit_w++;
|
||||||
|
|
||||||
|
if (m_unk_serial_bit_w == 8)
|
||||||
|
{
|
||||||
|
if ((m_unk_serial_cmd & 0x80) == 0) // register read
|
||||||
|
{
|
||||||
|
int reg = m_unk_serial_cmd & 0x7f;
|
||||||
|
UINT8 data = m_unk_serial_regs[reg];
|
||||||
|
|
||||||
|
m_unk_serial_data_r = ((data & 0x1) << 7) | ((data & 0x2) << 5) | ((data & 0x4) << 3) | ((data & 0x8) << 1) | ((data & 0x10) >> 1) | ((data & 0x20) >> 3) | ((data & 0x40) >> 5) | ((data & 0x80) >> 7);
|
||||||
|
|
||||||
|
printf("unk_serial read reg %02X: %04X\n", reg, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_unk_serial_bit_w == 16)
|
||||||
|
{
|
||||||
|
if (m_unk_serial_cmd & 0x80) // register write
|
||||||
|
{
|
||||||
|
int reg = m_unk_serial_cmd & 0x7f;
|
||||||
|
m_unk_serial_regs[reg] = m_unk_serial_data;
|
||||||
|
printf("unk_serial write reg %02X: %04X\n", reg, m_unk_serial_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_unk_serial_bit_w = 0;
|
||||||
|
m_unk_serial_cmd = 0;
|
||||||
|
m_unk_serial_data = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@ -1984,7 +2054,7 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
|
|||||||
AM_RANGE(0xfee00000, 0xfeefffff) AM_READWRITE(pci_config_data_r, pci_config_data_w)
|
AM_RANGE(0xfee00000, 0xfeefffff) AM_READWRITE(pci_config_data_r, pci_config_data_w)
|
||||||
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
|
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
|
||||||
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
|
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
|
||||||
AM_RANGE(0xff300000, 0xff300fff) AM_READWRITE(ata_r, ata_w)
|
// 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
|
||||||
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
|
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
|
||||||
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
|
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
|
||||||
AM_RANGE(0xffe10000, 0xffe10007) AM_READ(unk1_r)
|
AM_RANGE(0xffe10000, 0xffe10007) AM_READ(unk1_r)
|
||||||
@ -2135,12 +2205,21 @@ DRIVER_INIT_MEMBER(viper_state,viper)
|
|||||||
// m_maincpu->space(AS_PROGRAM).install_legacy_readwrite_handler( *ide, 0xff200000, 0xff207fff, FUNC(hdd_r), FUNC(hdd_w) ); //TODO
|
// m_maincpu->space(AS_PROGRAM).install_legacy_readwrite_handler( *ide, 0xff200000, 0xff207fff, FUNC(hdd_r), FUNC(hdd_w) ); //TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DRIVER_INIT_MEMBER(viper_state,viperhd)
|
||||||
|
{
|
||||||
|
DRIVER_INIT_CALL(viper);
|
||||||
|
|
||||||
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::ata_r), this), write64_delegate(FUNC(viper_state::ata_w), this));
|
||||||
|
}
|
||||||
|
|
||||||
DRIVER_INIT_MEMBER(viper_state,vipercf)
|
DRIVER_INIT_MEMBER(viper_state,vipercf)
|
||||||
{
|
{
|
||||||
DRIVER_INIT_CALL(viper);
|
DRIVER_INIT_CALL(viper);
|
||||||
|
|
||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff000000, 0xff000fff, read64_delegate(FUNC(viper_state::cf_card_data_r), this), write64_delegate(FUNC(viper_state::cf_card_data_w), this) );
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff000000, 0xff000fff, read64_delegate(FUNC(viper_state::cf_card_data_r), this), write64_delegate(FUNC(viper_state::cf_card_data_w), this) );
|
||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff200000, 0xff200fff, read64_delegate(FUNC(viper_state::cf_card_r), this), write64_delegate(FUNC(viper_state::cf_card_w), this) );
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff200000, 0xff200fff, read64_delegate(FUNC(viper_state::cf_card_r), this), write64_delegate(FUNC(viper_state::cf_card_w), this) );
|
||||||
|
|
||||||
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::unk_serial_r), this), write64_delegate(FUNC(viper_state::unk_serial_w), this) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2631,7 +2710,7 @@ ROM_END
|
|||||||
/* Viper BIOS */
|
/* Viper BIOS */
|
||||||
GAME(1999, kviper, 0, viper, viper, viper_state, viper, ROT0, "Konami", "Konami Viper BIOS", MACHINE_IS_BIOS_ROOT)
|
GAME(1999, kviper, 0, viper, viper, viper_state, viper, ROT0, "Konami", "Konami Viper BIOS", MACHINE_IS_BIOS_ROOT)
|
||||||
|
|
||||||
GAME(2001, ppp2nd, kviper, viper, viper, viper_state, viper, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
GAME(2001, ppp2nd, kviper, viper, viper, viper_state, viperhd, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
||||||
|
|
||||||
GAME(2001, boxingm, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Boxing Mania (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
GAME(2001, boxingm, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Boxing Mania (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
||||||
GAME(2000, code1d, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Code One Dispatch (ver D)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
GAME(2000, code1d, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Code One Dispatch (ver D)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
|
||||||
|
Loading…
Reference in New Issue
Block a user