summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/spg2xx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/spg2xx.cpp')
-rw-r--r--src/mame/drivers/spg2xx.cpp70
1 files changed, 66 insertions, 4 deletions
diff --git a/src/mame/drivers/spg2xx.cpp b/src/mame/drivers/spg2xx.cpp
index 4ae41b6ea2b..3c301f0d837 100644
--- a/src/mame/drivers/spg2xx.cpp
+++ b/src/mame/drivers/spg2xx.cpp
@@ -196,21 +196,21 @@ READ8_MEMBER(spg2xx_game_state::i2c_r)
READ16_MEMBER(spg2xx_game_state::rad_porta_r)
{
uint16_t data = m_io_p1->read();
- logerror("Port A Read: %04x\n", data);
+ logerror("%s: Port A Read: %04x\n", machine().describe_context(), data);
return data;
}
READ16_MEMBER(spg2xx_game_state::rad_portb_r)
{
uint16_t data = m_io_p2->read();
- logerror("Port B Read: %04x\n", data);
+ logerror("%s: Port B Read: %04x\n", machine().describe_context(), data);
return data;
}
READ16_MEMBER(spg2xx_game_state::rad_portc_r)
{
uint16_t data = m_io_p3->read();
- logerror("Port C Read: %04x\n", data);
+ logerror("%s: Port C Read: %04x\n", machine().describe_context(), data);
return data;
}
@@ -463,6 +463,29 @@ static INPUT_PORTS_START( wiwi18 )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( tvsprt10 )
+ PORT_START("P1")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x0180, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // Start
+ PORT_BIT( 0xfc00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("P2")
+ PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("P3")
+ PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( mattelcs ) // there is a 'secret test mode' that previously got activated before inputs were mapped, might need unused inputs to active?
PORT_START("P1")
PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_UNUSED ) // must be IP_ACTIVE_LOW or you can't switch to Football properly?
@@ -712,6 +735,20 @@ void spg2xx_game_state::abltenni(machine_config &config)
m_maincpu->set_rowscroll_offset(8);
}
+void spg2xx_game_state::tvsprt10(machine_config &config)
+{
+ SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
+ m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_2m);
+ m_maincpu->set_force_no_drc(true); // uses JVS opcode, not implemented in recompiler
+
+ spg2xx_base(config);
+
+ m_maincpu->porta_in().set(FUNC(spg2xx_game_state::rad_porta_r));
+ m_maincpu->portb_in().set(FUNC(spg2xx_game_state::rad_portb_r));
+ m_maincpu->portc_in().set(FUNC(spg2xx_game_state::rad_portc_r));
+}
+
+
void spg2xx_game_state::rad_skatp(machine_config &config)
{
rad_skat(config);
@@ -789,6 +826,11 @@ ROM_START( abltenni )
ROM_LOAD16_WORD_SWAP( "ablpnpwirelesstennis.bin", 0x000000, 0x400000, CRC(66bd8ef1) SHA1(a83640d5d9e84e10d29a065a61e0d7bbec16c6e4) )
ROM_END
+ROM_START( tvsprt10 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "tvsports10in1.bin", 0x000000, 0x400000, CRC(98b79889) SHA1(b0ba534d59b794bb38c071c70ab5bcf711364e06) )
+ROM_END
+
ROM_START( wiwi18 )
ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "26gl128.bin", 0x000000, 0x1000000, CRC(0b103ac9) SHA1(14434908f429942096fb8db5b5630603fd54fb2c) )
@@ -816,6 +858,23 @@ void spg2xx_game_state::init_wiwi18()
rom[0x1ca259] = 0xf165;
}
+void spg2xx_game_state::init_tvsprt10()
+{
+ uint16_t* rom = (uint16_t*)memregion("maincpu")->base();
+ // hack 'MASK' check (some kind of EEPROM maybe?)
+ // this hack means the ROM CRC fails, but without it the CRC is OK, so dump is good.
+ /*
+ port b 0010 = chip select? / always set when accessing?
+ 0008 = write enable (set when writing, not when reading)
+ 0004 = chip select? / always set when accessing?
+ 0002 = clock? (toggles)
+ 0001 = data in / out
+ */
+ rom[0x18c55d] ^= 0x0001;
+}
+
+
+
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
// Radica TV games
@@ -826,7 +885,10 @@ CONS( 2007, rad_sktv, 0, 0, rad_sktv, rad_sktv, spg2xx_game_state, ini
CONS( 2007, rad_fb2, 0, 0, rad_skat, rad_fb2, spg2xx_game_state, init_crc, "Radica", "Play TV Football 2", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // offers a 2 player option in menus, but seems to have only been programmed for, and released as, a single player unit, P2 controls appear unfinished.
// ABL TV Games
-CONS( 2006, abltenni, 0, 0, abltenni, abltenni, spg2xx_game_state, empty_init, "Advance Bright Ltd", "Wireless Tennis (WT2000, ABL TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+CONS( 2006, abltenni, 0, 0, abltenni, abltenni, spg2xx_game_state, empty_init, "Advance Bright Ltd / V-Tac Technology Co Ltd.", "Wireless Tennis (WT2000, ABL TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+
+// same as Excalibur Decathlon? not the same as the ABL game
+CONS( 2006, tvsprt10, 0, 0, tvsprt10, tvsprt10, spg2xx_game_state, init_tvsprt10, "Simba / V-Tac Technology Co Ltd.", "TV Sports 10-in-1 / Decathlon Atlhetic Sport Games", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// Mattel games
CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )