New working machines added

-------------
Starting Lineup Talking Baseball [hap, Kevin Horton]
Superstar Lineup Talking Football [hap, Kevin Horton]
This commit is contained in:
hap 2019-04-26 21:57:04 +02:00
parent 5cd463e076
commit 0680e6f454
9 changed files with 705 additions and 4 deletions

View File

@ -3993,6 +3993,8 @@ files {
MAME_DIR .. "src/mame/drivers/sys2900.cpp",
MAME_DIR .. "src/mame/drivers/sys9002.cpp",
MAME_DIR .. "src/mame/drivers/systec.cpp",
MAME_DIR .. "src/mame/drivers/talkingbb.cpp",
MAME_DIR .. "src/mame/drivers/talkingfb.cpp",
MAME_DIR .. "src/mame/drivers/tavernie.cpp",
MAME_DIR .. "src/mame/drivers/tecnbras.cpp",
MAME_DIR .. "src/mame/drivers/terak.cpp",

View File

@ -272,5 +272,5 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
COMP( 1978, boris, 0, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 01)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris awaits your move"
COMP( 1978, borisa, boris, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 00)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris plays black"
CONS( 1978, boris, 0, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 01)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris awaits your move"
CONS( 1978, borisa, boris, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 00)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris plays black"

View File

@ -407,4 +407,4 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
COMP( 1980, ggm, 0, 0, ggm, ggm, ggm_state, empty_init, "Applied Concepts", "Great Game Machine", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1980, ggm, 0, 0, ggm, ggm, ggm_state, empty_init, "Applied Concepts", "Great Game Machine", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -415,4 +415,4 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
COMP( 1978, 2001tgm, 0, 0, tgm, tgm, tgm_state, empty_init, "Waddingtons", "2001: The Game Machine", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
CONS( 1978, 2001tgm, 0, 0, tgm, tgm, tgm_state, empty_init, "Waddingtons", "2001: The Game Machine", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )

View File

@ -0,0 +1,379 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Kevin Horton
/******************************************************************************
Parker Brothers Starting Lineup Talking Baseball
Hardware notes:
- PCB label KPT-349 REV 6C<1>
- 80C31 MCU @ 12MHz
- 2KB RAM, 128KB ROM, 2 cartridge slots
- 12 leds, 2 16-button keypads
ROM chip has (C) 1987 Tonka (Kenner Parker Toys was acquired by Tonka in 1987, Parker
Brothers itself was acquired by Kenner in 1985)
The speech driver is by Forrest S. Mozer's company.
The cartridge slots are for extra teams. There are around 8 cartridges, each one
included 3 or 4 baseball teams, with exception to the "Hall of Fame" cartridge.
Players enter 3-digit code to select the team.
TODO:
- add cartridge slots
- Buttons are unresponsive at initial game setup, you need to hold the yes/no button
until it responds. The keypad reading routine is at $1A5D, it gets skipped for several
seconds at a time. Once in-game, everything is fine though. BTANB or different cause?
*******************************************************************************
Field positions (used when substituting):
1: Pitcher
2: Catcher
3: First Base
4: Second Base
5: Third Base
6: Shortstop
7: Left Field
8: Center Field
9: Right Field
The game includes baseball cards with player stats. At the very least, the roster
cards are needed to play the game properly. See below for the default teams.
American Team:
--------------
Starting lineup batting order:
1: #23 Rickey Henderson, CF
2: #14 Don Mattingly, 1B
3: #18 Wade Boggs, 3B
4: #22 George Bell, LF
5: #24 Dave Winfield, RF
6: #16 Cal Ripken, SS
7: #11 Terry Kennedy, C
8: #15 Willie Randolph, 2B
9: #20 Alan Trammell, SS & DH
10:#27 Roger Clemens, P
Substitutes:
#19: George Brett, 3B
#12: Carlton Fisk, C
#25: Jack Morris, P
#13: Eddie Murray, 1B
#21: Kirby Puckett, OF
#30: Dan Quisenberry, P
#29: Dave Righetti, P
#28: Bret Saberhagen, P
#17: Lou Whitaker, 2B
#26: Robin Yount, SS
National Team:
--------------
Starting lineup batting order:
1: #23: Tim Raines, LF
2: #16: Ryne Sandberg, 2B
3: #22: Darryl Strawberry, RF
4: #19: Mike Schmidt, 3B
5: #13: Jack Clark, 1B
6: #20: Eric Davis, CF
7: #11: Gary Carter, C
8: #17: Ozzie Smith, SS
9: #18: Dale Murphy, OF & DH
10:#25: Mike Scott, P
Substitutes:
#15: Buddy Bell, 3B
#26: Jody Davis, C
#24: Andre Dawson, CF
#29: Dwight Gooden, P
#21: Tony Gwynn, OF
#14: Keith Hernandez, 1B
#30: Nolan Ryan, P
#12: Steve Sax, 2B
#28: Fernando Valenzuela, P
#27: Todd Worrell, P
******************************************************************************/
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "speaker.h"
// internal artwork
#include "talkingbb.lh"
namespace {
class talkingbb_state : public driver_device
{
public:
talkingbb_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_rom(*this, "maincpu"),
m_delay_display(*this, "delay_display_%u", 0),
m_out_led(*this, "led%u", 0U),
m_inputs(*this, "IN.%u", 0)
{ }
void talkingbb(machine_config &config);
protected:
virtual void machine_start() override;
private:
// devices/pointers
required_device<mcs51_cpu_device> m_maincpu;
required_region_ptr<u8> m_rom;
required_device_array<timer_device, 12> m_delay_display;
output_finder<12> m_out_led;
required_ioport_array<5> m_inputs;
void main_map(address_map &map);
void main_io(address_map &map);
u8 m_bank;
u8 m_led_select;
TIMER_DEVICE_CALLBACK_MEMBER(delay_display) { m_out_led[param] = 0; }
// I/O handlers
DECLARE_WRITE8_MEMBER(bank_w);
DECLARE_READ8_MEMBER(bank_r);
DECLARE_WRITE8_MEMBER(input_w);
DECLARE_READ8_MEMBER(input_r);
DECLARE_READ8_MEMBER(switch_r);
};
void talkingbb_state::machine_start()
{
// resolve handlers
m_out_led.resolve();
// zerofill
m_bank = 0;
m_led_select = 0;
// register for savestates
save_item(NAME(m_bank));
save_item(NAME(m_led_select));
}
/******************************************************************************
I/O
******************************************************************************/
WRITE8_MEMBER(talkingbb_state::bank_w)
{
// d0-d1: upper rom bank
// d2-d4: upper rom enable (bus conflict possible)
// d3: internal rom, cart slot 1, d4: cart slot 2
m_bank = data;
}
READ8_MEMBER(talkingbb_state::bank_r)
{
u32 hi = (~m_bank & 3) << 15;
u8 data = (m_bank & 4) ? 0xff : m_rom[offset | hi];
// TODO: cartridge
return data;
}
WRITE8_MEMBER(talkingbb_state::input_w)
{
// no effect if P30 is low (never happens though)
if (~m_bank & 1)
return;
// d4-d7: led select (also input mux)
// d0-d2: led data
for (int i = 0; i < 12; i++)
{
u8 prev = BIT(m_led_select >> 4, i & 3) & BIT(~m_led_select, i >> 2);
u8 cur = BIT(data >> 4, i & 3) & BIT(~data, i >> 2);
// they're strobed, so on falling edge, delay them going off to prevent flicker or stuck display
if (prev & ~cur)
m_delay_display[i]->adjust(attotime::from_msec(50), i);
else if (cur)
m_out_led[i] = 1;
}
m_led_select = data;
}
READ8_MEMBER(talkingbb_state::input_r)
{
// open bus if P30 is low (never happens though)
if (~m_bank & 1)
return 0xff;
u8 data = 0;
// multiplexed inputs
for (int i = 0; i < 4; i++)
if (BIT(m_led_select >> 4, i))
data |= m_inputs[i]->read();
return ~data;
}
READ8_MEMBER(talkingbb_state::switch_r)
{
// d5: mode switch
return ~m_inputs[4]->read();
}
/******************************************************************************
Address Maps
******************************************************************************/
void talkingbb_state::main_map(address_map &map)
{
map(0x0000, 0x7fff).rom().region("maincpu", 0x18000);
map(0x8000, 0xffff).r(FUNC(talkingbb_state::bank_r));
}
void talkingbb_state::main_io(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x3800).ram();
map(0x8000, 0x8000).mirror(0x7fff).rw(FUNC(talkingbb_state::input_r), FUNC(talkingbb_state::input_w));
}
/******************************************************************************
Input Ports
******************************************************************************/
/* keypad layout: **** P1 = Batter **** | **** P2 = Pitcher ****
|
[PINCH [1 [2] [3 [TIME OUT] | [INFIELD [1 [2 [3 [TIME OUT]
HITTER] BUNT] POWER] | IN] FAST] CURVE] CHANGE]
|
[SCORE] [4] [5 [6] [NO | [SCORE] [4 [5 [6 [NO
SQUEEZE] CANCEL] | PTCHOUT] PICKOFF] INTWALK] CANCEL]
|
[PINCH [7 [8] [9 [YES | [INSTANT [7 [8] [9 [YES
RUNNER] STEAL] X-BASE] ENTER] | REPLAY] RELIEF] SUB] ENTER]
|
[0 | [0
SWING] | BALL]
*/
static INPUT_PORTS_START( talkingbb )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_R) PORT_NAME("P1 3 / Power")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F) PORT_NAME("P1 6")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_V) PORT_NAME("P1 9 / Extra Base")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_MINUS) PORT_NAME("P1 Time Out")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_O) PORT_NAME("P2 3 / Change")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_L) PORT_NAME("P2 6 / Intentional Walk")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_STOP) PORT_NAME("P2 9 / Sub")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("P2 Time Out")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_E) PORT_NAME("P1 2")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_D) PORT_NAME("P1 5 / Squeeze")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_C) PORT_NAME("P1 8")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_LALT) PORT_NAME("P1 0 / Swing")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_I) PORT_NAME("P2 2 / Curve")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_K) PORT_NAME("P2 5 / Pickoff")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_COMMA) PORT_NAME("P2 8")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RALT) PORT_NAME("P2 0 / Ball")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_W) PORT_NAME("P1 1 / Bunt")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_S) PORT_NAME("P1 4")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_X) PORT_NAME("P1 7 / Steal")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("P1 No / Cancel")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_U) PORT_NAME("P2 1 / Fast")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_J) PORT_NAME("P2 4 / Pitchout")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_M) PORT_NAME("P2 7 / Relief")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("P2 No / Cancel")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("P1 Pinch Hitter")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("P1 Score")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("P1 Pinch Runner")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("P1 Yes / Enter")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("P2 Infield In")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("P2 Score")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("P2 Instant Replay")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("P2 Yes / Enter")
PORT_START("IN.4")
PORT_CONFNAME( 0x20, 0x00, "Mode" )
PORT_CONFSETTING( 0x00, "Player" )
PORT_CONFSETTING( 0x20, "Coach" )
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void talkingbb_state::talkingbb(machine_config &config)
{
/* basic machine hardware */
I80C31(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &talkingbb_state::main_map);
m_maincpu->set_addrmap(AS_IO, &talkingbb_state::main_io);
m_maincpu->port_out_cb<1>().set("dac", FUNC(dac_8bit_r2r_device::write));
m_maincpu->port_out_cb<3>().set(FUNC(talkingbb_state::bank_w));
m_maincpu->port_in_cb<3>().set(FUNC(talkingbb_state::switch_r));
/* video hardware */
for (int i = 0; i < 12; i++)
TIMER(config, m_delay_display[i]).configure_generic(FUNC(talkingbb_state::delay_display));
config.set_default_layout(layout_talkingbb);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, "dac").add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( talkingbb )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD("sp17208-002", 0x0000, 0x20000, CRC(e0e56217) SHA1(24a06b5c94a5c750799f61e3eb865e02d6cea68a) ) // GM231000-110
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1988, talkingbb, 0, 0, talkingbb, talkingbb, talkingbb_state, empty_init, "Parker Brothers", "Starting Lineup Talking Baseball", MACHINE_SUPPORTS_SAVE )

View File

@ -0,0 +1,264 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Kevin Horton
/******************************************************************************
Parker Brothers Superstar Lineup Talking Football
Hardware notes:
- PCB label KPT-410 REV B1 (*KPT = Kenner Parker Toys)
- 80C31 MCU @ 12MHz
- 2KB RAM, 256KB ROM, 2 cartridge slots
- two 20-button keypads
Like Baseball, The ROM chip has (C) Tonka.
The speech driver is by Mozer, the ROM data includes employees names.
The cartridge slots are probably meant for extra teams. I can't find anything
about it in the manual or any proof that cartridges were released for this.
Maybe the toy went out of production soon after release.
The game includes formation cards, refer to the manual on which number is which strategy.
TODO:
- add cartridge slots (no need if no carts exist?)
- verify keypad (everything seems ok, but "Pursue" and "Go For Turnover" might
be swapped, their function is nearly identical so it's hard to test)
******************************************************************************/
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "speaker.h"
namespace {
class talkingfb_state : public driver_device
{
public:
talkingfb_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_rom(*this, "maincpu"),
m_inputs(*this, "IN.%u", 0)
{ }
void talkingfb(machine_config &config);
protected:
virtual void machine_start() override;
private:
// devices/pointers
required_device<mcs51_cpu_device> m_maincpu;
required_region_ptr<u8> m_rom;
required_ioport_array<5> m_inputs;
void main_map(address_map &map);
void main_io(address_map &map);
u8 m_bank;
u8 m_inp_mux;
// I/O handlers
DECLARE_WRITE8_MEMBER(bank_w);
template<int Psen> DECLARE_READ8_MEMBER(bank_r);
DECLARE_WRITE8_MEMBER(input_w);
DECLARE_READ8_MEMBER(input_r);
};
void talkingfb_state::machine_start()
{
// zerofill
m_bank = 0;
m_inp_mux = 0;
// register for savestates
save_item(NAME(m_bank));
save_item(NAME(m_inp_mux));
}
/******************************************************************************
I/O
******************************************************************************/
WRITE8_MEMBER(talkingfb_state::bank_w)
{
// d0-d2: upper rom bank
// d3-d5: upper rom enable (bus conflict possible)
// d3: cart slot 1, d4: cart slot 2, d5: internal rom
m_bank = data;
}
template<int Psen>
READ8_MEMBER(talkingfb_state::bank_r)
{
u32 hi = (m_bank & 7) << 15;
u8 data = (m_bank & 0x20) ? 0xff : m_rom[offset | hi];
// cartridge slots are only enabled if PSEN is high
// TODO
return data;
}
WRITE8_MEMBER(talkingfb_state::input_w)
{
// d3-d7: input mux
m_inp_mux = data >> 3;
}
READ8_MEMBER(talkingfb_state::input_r)
{
u8 data = 0;
// multiplexed inputs
for (int i = 0; i < 5; i++)
if (BIT(~m_inp_mux, i))
data |= m_inputs[i]->read();
return ~data;
}
/******************************************************************************
Address Maps
******************************************************************************/
void talkingfb_state::main_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0xffff).r(FUNC(talkingfb_state::bank_r<0>));
}
void talkingfb_state::main_io(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x3800).ram();
map(0x4000, 0x4000).mirror(0x3fff).rw(FUNC(talkingfb_state::input_r), FUNC(talkingfb_state::input_w));
map(0x8000, 0xffff).r(FUNC(talkingfb_state::bank_r<1>));
}
/******************************************************************************
Input Ports
******************************************************************************/
/* keypad layout is like this: (P1 = Home, P2 = Away, both keypads are same)
OFFENSIVE [1 [2 [3 DEFENSIVE
ACTION HB] FB] ST] ACTION
[SCRAM/ [SCORE] [4 [5 [6 [PURSUE]
EVADE] FL] WR] TE]
[PASS OUT/ [TIME [7] [8 [9] [GO FOR
RUN OUT] OUT] SE] TURNOVER]
[CHECK OFF [REPLAY] [YES/ [0 [NO/
TO BACK] ENTER] DEMO] CANCEL]
*/
static INPUT_PORTS_START( talkingfb )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("P2 Pursue")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("P2 Scram / Evade")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("P2 Pass Out / Run Out")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("P2 Check Off To Back")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("P1 Pursue")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("P1 Scram / Evade")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("P1 Pass Out / Run Out")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("P1 Check Off To Back")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("P2 Go For Turnover")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("P2 Score")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("P2 Time Out")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("P2 Replay")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("P1 Go For Turnover")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("P1 Score")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("P1 Time Out")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("P1 Replay")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("P2 1 / HB")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("P2 4 / FL")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("P2 7")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("P2 Yes / Enter")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("P1 1 / HB")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("P1 4 / FL")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("P1 7")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("P1 Yes / Enter")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("P2 2 / FB")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("P2 5 / WR")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("P2 8 / SE")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("P2 0 / Demo")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("P1 2 / FB")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("P1 5 / WR")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("P1 8 / SE")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("P1 0 / Demo")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("P2 3 / ST")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("P2 6 / TE")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("P2 9")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("P2 No / Cancel")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("P1 3 / ST")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("P1 6 / TE")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("P1 9")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("P1 No / Cancel")
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void talkingfb_state::talkingfb(machine_config &config)
{
/* basic machine hardware */
I80C31(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &talkingfb_state::main_map);
m_maincpu->set_addrmap(AS_IO, &talkingfb_state::main_io);
m_maincpu->port_out_cb<1>().set("dac", FUNC(dac_8bit_r2r_device::write));
m_maincpu->port_out_cb<3>().set(FUNC(talkingfb_state::bank_w));
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, "dac").add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( talkingfb )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD("sp17492-001", 0x0000, 0x40000, CRC(d03851c6) SHA1(e8ac9c342bee987657c3c18f24d466b3906d6fb0) ) // Sharp LH532378
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1989, talkingfb, 0, 0, talkingfb, talkingfb, talkingfb_state, empty_init, "Parker Brothers", "Superstar Lineup Talking Football", MACHINE_SUPPORTS_SAVE )

View File

@ -0,0 +1,48 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="white"><rect><color red="0.9" green="0.9" blue="0.9" /></rect></element>
<element name="yellow"><rect><color red="0.8" green="0.75" blue="0.6" /></rect></element>
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="led" defstate="0">
<disk state="0"><color red="0.15" green="0.015" blue="0.02" /></disk>
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="14.85" right="30.15" top="8.85" bottom="26.15" />
<bezel element="yellow"><bounds x="14.5" y="8.5" width="16" height="18" /></bezel>
<bezel element="black"><bounds x="19.35" y="19.35" width="6.3" height="6.3" /></bezel>
<bezel element="white"><bounds x="19.5" y="19.5" width="6" height="6" /></bezel>
<bezel name="led1" element="led"><bounds x="20" y="20" width="1" height="1" /></bezel>
<bezel name="led2" element="led"><bounds x="20" y="22" width="1" height="1" /></bezel>
<bezel name="led3" element="led"><bounds x="20" y="24" width="1" height="1" /></bezel>
<bezel name="led5" element="led"><bounds x="22" y="20" width="1" height="1" /></bezel>
<bezel name="led6" element="led"><bounds x="22" y="22" width="1" height="1" /></bezel>
<bezel name="led7" element="led"><bounds x="22" y="24" width="1" height="1" /></bezel>
<bezel name="led9" element="led"><bounds x="24" y="20" width="1" height="1" /></bezel>
<bezel name="led10" element="led"><bounds x="24" y="22" width="1" height="1" /></bezel>
<bezel name="led11" element="led"><bounds x="24" y="24" width="1" height="1" /></bezel>
<bezel element="black"><bounds x="15.35" y="15.35" width="2.3" height="2.3" /></bezel>
<bezel element="white"><bounds x="15.5" y="15.5" width="2" height="2" /></bezel>
<bezel name="led0" element="led"><bounds x="16" y="16" width="1" height="1" /></bezel>
<bezel element="black"><bounds x="27.35" y="15.35" width="2.3" height="2.3" /></bezel>
<bezel element="white"><bounds x="27.5" y="15.5" width="2" height="2" /></bezel>
<bezel name="led8" element="led"><bounds x="28" y="16" width="1" height="1" /></bezel>
<bezel element="black"><bounds x="21.35" y="9.35" width="2.3" height="2.3" /></bezel>
<bezel element="white"><bounds x="21.5" y="9.5" width="2" height="2" /></bezel>
<bezel name="led4" element="led"><bounds x="22" y="10" width="1" height="1" /></bezel>
</view>
</mamelayout>

View File

@ -37326,6 +37326,12 @@ taitotz //
@source:taitowlf.cpp
pf2012 // E59 (c) 1997 Taito
@source:talkingbb.cpp
talkingbb
@source:talkingfb.cpp
talkingfb
@source:tamag1.cpp
tama // Bandai

View File

@ -758,6 +758,8 @@ symbolics.cpp
sys2900.cpp
sys9002.cpp
systec.cpp
talkingbb.cpp
talkingfb.cpp
tamag1.cpp
tandy1t.cpp
tandy2k.cpp