new NOT WORKING machines (#7137)

new NOT WORKING machines
----
Hot Wheels (2 player, pad controllers) [Sean Riddle, David Haywood]
This commit is contained in:
David Haywood 2020-08-25 20:03:22 +01:00 committed by GitHub
parent 664ff9b7e9
commit 2c4c400314
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 132 additions and 0 deletions

View File

@ -1024,6 +1024,48 @@ static INPUT_PORTS_START( tmntbftc )
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( hotwheels )
// 2 pads, each pad has 4 directions and 1 button, and an internal solder pad to select type, but input reading code seems a bit more complex
// the unit this was dumped from was a PAL, with P1 as 'Bling' and P2 as 'Tuner' so those are the defaults used
PORT_START("P1")
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_CONFNAME( 0x0500, 0x0000, "Player 2 Controller Type" )
PORT_CONFSETTING( 0x0000, "Tuner" )
PORT_CONFSETTING( 0x0100, "Off-Road" )
//PORT_CONFSETTING( 0x0400, "Tuner" )
PORT_CONFSETTING( 0x0500, "Nothing" )
PORT_BIT( 0x0a00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_CONFNAME( 0x0080, 0x0000, "Player 1 Controller Type" )
PORT_CONFSETTING( 0x0000, "Bling" )
PORT_CONFSETTING( 0x0080, "Rally" )
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("P1EXTRA")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag (ACTIVE_HIGH = NTSC, ACTIVE_LOW = PAL)
PORT_BIT( 0x00fc, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P3") // never read?
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
void spg2xx_game_state::machine_start()
{
if (m_bank)
@ -1615,6 +1657,61 @@ void spg2xx_game_ordentv_state::ordentv(machine_config &config)
}
void spg2xx_game_hotwheels_state::porta_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
logerror("%s: porta_w %04x (%04x) %c %c %c %c | %c %c %c %c | %c %c %c %c | %c %c %c %c \n", machine().describe_context(), data, mem_mask,
(mem_mask & 0x8000) ? ((data & 0x8000) ? '1' : '0') : 'x',
(mem_mask & 0x4000) ? ((data & 0x4000) ? '1' : '0') : 'x',
(mem_mask & 0x2000) ? ((data & 0x2000) ? '1' : '0') : 'x',
(mem_mask & 0x1000) ? ((data & 0x1000) ? '1' : '0') : 'x',
(mem_mask & 0x0800) ? ((data & 0x0800) ? '1' : '0') : 'x',
(mem_mask & 0x0400) ? ((data & 0x0400) ? '1' : '0') : 'x',
(mem_mask & 0x0200) ? ((data & 0x0200) ? '1' : '0') : 'x',
(mem_mask & 0x0100) ? ((data & 0x0100) ? '1' : '0') : 'x',
(mem_mask & 0x0080) ? ((data & 0x0080) ? '1' : '0') : 'x',
(mem_mask & 0x0040) ? ((data & 0x0040) ? '1' : '0') : 'x',
(mem_mask & 0x0020) ? ((data & 0x0020) ? '1' : '0') : 'x',
(mem_mask & 0x0010) ? ((data & 0x0010) ? '1' : '0') : 'x',
(mem_mask & 0x0008) ? ((data & 0x0008) ? '1' : '0') : 'x',
(mem_mask & 0x0004) ? ((data & 0x0004) ? '1' : '0') : 'x',
(mem_mask & 0x0002) ? ((data & 0x0002) ? '1' : '0') : 'x',
(mem_mask & 0x0001) ? ((data & 0x0001) ? '1' : '0') : 'x');
m_porta_dat_hot = data;
}
uint16_t spg2xx_game_hotwheels_state::hotwheels_porta_r(offs_t offset, uint16_t mem_mask)
{
uint16_t data;
if (m_porta_dat_hot)
data = m_io_p1->read();
else
data = m_io_p1_extra->read();
logerror("%s: Port A Read: %04x (%04x)\n", machine().describe_context(), data, mem_mask);
return data;
}
void spg2xx_game_hotwheels_state::hotwheels(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_hotwheels_state::mem_map_2m);
spg2xx_base(config);
m_maincpu->porta_in().set(FUNC(spg2xx_game_hotwheels_state::hotwheels_porta_r));
m_maincpu->portb_in().set(FUNC(spg2xx_game_hotwheels_state::base_portb_r));
m_maincpu->portc_in().set(FUNC(spg2xx_game_hotwheels_state::base_portc_r));
m_maincpu->porta_out().set(FUNC(spg2xx_game_hotwheels_state::porta_w));
m_maincpu->set_pal(true);
m_screen->set_refresh_hz(50);
}
ROM_START( rad_skat )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
@ -1785,6 +1882,14 @@ ROM_START( tiktokmm )
ROM_LOAD16_WORD_SWAP( "webcamthingy.bin", 0x000000, 0x800000, CRC(54c0d4a9) SHA1(709ee607ca447baa6f7e686268df1998372fe617) )
ROM_END
ROM_START( hotwhl2p )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
// this needed to be reconstructed from 80 reads of the device, so isn't 100% trusted
ROM_LOAD16_WORD_SWAP( "hotwheels.bin", 0x000000, 0x400000, BAD_DUMP CRC(f3520b74) SHA1(02a53558d68cf3640a9ab09514cd6cebff8b30af) )
ROM_END
void spg2xx_game_state::init_crc()
{
// several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match.
@ -1903,6 +2008,9 @@ CONS( 2008, swclone, 0, 0, swclone, swclone, spg2xx_game_swclone_s
// Mattel games
CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )
// there's also a single player Hot Wheels Plug and Play that uses a wheel style controller
CONS( 2006, hotwhl2p, 0, 0, hotwheels, hotwheels, spg2xx_game_hotwheels_state,empty_init, "Mattel", "Hot Wheels (2 player, pad controllers)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
CONS( 2007, ordentv, 0, 0, ordentv, ordentv, spg2xx_game_ordentv_state, init_ordentv, "Taikee / V-Tac", "Ordenador-TV (Spain)", MACHINE_NOT_WORKING )
CONS( 200?, wfcentro, 0, 0, wfcentro, spg2xx, spg2xx_game_wfcentro_state, empty_init, "WinFun", "Centro TV de Diseno Artistico (Spain)", MACHINE_NOT_WORKING )

View File

@ -313,5 +313,28 @@ protected:
private:
};
class spg2xx_game_hotwheels_state : public spg2xx_game_state
{
public:
spg2xx_game_hotwheels_state(const machine_config &mconfig, device_type type, const char *tag) :
spg2xx_game_state(mconfig, type, tag),
m_porta_dat_hot(0xffff),
m_io_p1_extra(*this, "P1EXTRA")
{ }
void hotwheels(machine_config &config);
protected:
uint16_t hotwheels_porta_r(offs_t offset, uint16_t mem_mask = ~0);
virtual void porta_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override;
private:
uint16_t m_porta_dat_hot;
required_ioport m_io_p1_extra;
};
#endif // MAME_INCLUDES_SPG2XX_H

View File

@ -38033,6 +38033,7 @@ rad_skatp //
rad_crik //
rad_fb2 //
mattelcs //
hotwhl2p
comil //
abltenni //
totspies