hh_tms1k: fonas 3in1 WIP (nw)

This commit is contained in:
hap 2017-12-03 18:31:04 +01:00
parent 3555ce616e
commit b28d91f1f2
2 changed files with 127 additions and 3 deletions

View File

@ -41,7 +41,7 @@
@MP1180 TMS1100 1980, Tomy Power House Pinball
@MP1181 TMS1100 1979, Conic Football 2
@MP1183 TMS1100 1980, E.R.S. Superbowl XV Football/Tandy Championship Football (model 60-2151)
*MP1185 TMS1100 1979, Fonas 3-in-1: Football, Basketball, Soccer
@MP1185 TMS1100 1979, Fonas 3-in-1: Football, Basketball, Soccer
@MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150)
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
*MP1209 TMS1100 1980, U.S. Games Space Cruiser/Strategy Football
@ -129,7 +129,7 @@
- unknown MCU clocks for some: TMS1000 RC curve is documented in the data manual,
but not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
- some of the games rely on the fact that faster/longer strobed leds appear brighter,
eg. tc4/h2hfootb(offense), bankshot(cue ball), ...
eg. tc4/h2hfootb(offense), bankshot(cue ball), f3in1(ball), ...
- stopthiep: unable to start a game (may be intentional?)
- 7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game?
- arrball: shot button is unresponsive sometimes, maybe BTANB? no video of game on Youtube
@ -3957,6 +3957,116 @@ MACHINE_CONFIG_END
/***************************************************************************
Fonas 3 in 1: Football, Basketball, Soccer
* TMS1100NLL MP1185
* 4 7seg LEDs, 40 other LEDs, 1-bit sound
It's not known if this game has an official title. The current one is
taken from the handheld front side.
MAME external artwork is needed for the switchable overlays.
***************************************************************************/
class f3in1_state : public hh_tms1k_state
{
public:
f3in1_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
void f3in1_state::prepare_display()
{
// R6-R9 are 7segs
set_display_segmask(0x3c0, 0x7f);
display_matrix(8, 10, m_o, m_r & ~0x20);
}
WRITE16_MEMBER(f3in1_state::write_r)
{
// R0-R2,R4: input mux
m_inp_mux = (data & 7) | (data >> 1 & 8);
// R10: speaker out
m_speaker->level_w(data >> 10 & 1);
// R0-R4,R6-R9: led select
m_r = data;
prepare_display();
}
WRITE16_MEMBER(f3in1_state::write_o)
{
// O0-O7: led state
m_o = data;
prepare_display();
}
READ8_MEMBER(f3in1_state::read_k)
{
// K: multiplexed inputs
return read_inputs(4);
}
// config
static INPUT_PORTS_START( f3in1 )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) // P
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // K
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // D
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // R1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // R2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // R4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_CONFNAME( 0x0e, 0x02, "Game Select" )
PORT_CONFSETTING( 0x02, "Football" )
PORT_CONFSETTING( 0x04, "Basketball" )
PORT_CONFSETTING( 0x08, "Soccer" )
INPUT_PORTS_END
static MACHINE_CONFIG_START( f3in1 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1100, 325000) // see set_clock ---TODO
MCFG_TMS1XXX_READ_K_CB(READ8(f3in1_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(f3in1_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(f3in1_state, write_o))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
//MCFG_DEFAULT_LAYOUT(layout_f3in1)
MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
/***************************************************************************
Gakken Poker
@ -8828,6 +8938,7 @@ static MACHINE_CONFIG_START( xl25 )
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(xl25_state, write_o))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
//MCFG_DEFAULT_LAYOUT(layout_xl25)
MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
/* sound hardware */
@ -9146,6 +9257,17 @@ ROM_START( f2pbball )
ROM_END
ROM_START( f3in1 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) )
ROM_END
ROM_START( gpoker )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) )
@ -9652,6 +9774,7 @@ CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, ebaskb2_state, 0,
CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, raisedvl_state, 0, "Entex", "Raise The Devil", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, f2pbball, 0, 0, f2pbball, f2pbball, f2pbball_state, 0, "Fonas", "2 Player Baseball (Fonas)", MACHINE_SUPPORTS_SAVE )
CONS( 1979, f3in1, 0, 0, f3in1, f3in1, f3in1_state, 0, "Fonas", "3 in 1: Football, Basketball, Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, gpoker, 0, 0, gpoker, gpoker, gpoker_state, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, gjackpot_state, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE )
@ -9706,7 +9829,7 @@ CONS( 1980, phpball, 0, 0, phpball, phpball, phpball_state, 0,
CONS( 1980, ssports4, 0, 0, ssports4, ssports4, ssports4_state, 0, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1983, xl25, 0, 0, xl25, xl25, xl25_state, 0, "Vulcan Electronics", "XL 25", MACHINE_SUPPORTS_SAVE )
CONS( 1983, xl25, 0, 0, xl25, xl25, xl25_state, 0, "Vulcan Electronics", "XL 25", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.

View File

@ -14743,6 +14743,7 @@ eleciq // Conic
esbattle // Entex
esoccer // Entex
f2pbball // Fonas
f3in1 // Fonas
fxmcr165 // Gakken
ginv1000 // Gakken
gjackpot // Gakken