mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
(MESS)New working game added
----------------- Mattel World Championship Baseball [hap, Kevin Horton]
This commit is contained in:
parent
e08ddc8cad
commit
585c62bda2
@ -33,6 +33,7 @@
|
||||
*35 HD38800B 1983, Bandai Gundam vs Gelgoog Zaku
|
||||
*43 HD38800B 1983, Bandai Dokodemo Dorayaki Doraemon
|
||||
|
||||
@09 HD38820A 1980, Mattel World Championship Baseball
|
||||
@13 HD38820A 1981, Entex Galaxian 2
|
||||
@23 HD38820A 1981, Entex Pac Man 2
|
||||
@28 HD38820A 1981, Coleco Pac-Man (ver 1)
|
||||
@ -2211,6 +2212,168 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Mattel World Championship Baseball
|
||||
* PCB label MEL-001 Baseball Rev. B
|
||||
* Hitachi QFP HD38820A09 MCU
|
||||
* cyan/red/green VFD display Futaba DM-24ZK 1G, with etched overlay
|
||||
|
||||
To start the game in 2-player mode, simply turn the game on. For 1-player,
|
||||
turn the game on while holding the 1-key and use the visitor's side keypad
|
||||
to play offsense.
|
||||
|
||||
NOTE!: MESS external artwork is recommended
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class mwcbaseb_state : public hh_hmcs40_state
|
||||
{
|
||||
public:
|
||||
mwcbaseb_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_hmcs40_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
DECLARE_WRITE16_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(speaker_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void mwcbaseb_state::prepare_display()
|
||||
{
|
||||
UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
|
||||
display_matrix(16, 8, m_plate, grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mwcbaseb_state::plate_w)
|
||||
{
|
||||
// R1x-R3x,R6x: vfd matrix plate
|
||||
int shift = (offset == HMCS40_PORT_R6X) ? 12 : (offset - HMCS40_PORT_R1X) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(mwcbaseb_state::grid_w)
|
||||
{
|
||||
// D9-D15: input mux
|
||||
m_inp_mux = data >> 9 & 0x7f;
|
||||
|
||||
// D0-D7: vfd matrix grid
|
||||
m_grid = data & 0xff;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mwcbaseb_state::speaker_w)
|
||||
{
|
||||
// R50,R51+R52(tied together): speaker out
|
||||
m_speaker->level_w((data & 3) | (data >> 1 & 2));
|
||||
}
|
||||
|
||||
READ8_MEMBER(mwcbaseb_state::input_r)
|
||||
{
|
||||
// R4x: multiplexed inputs
|
||||
return read_inputs(7);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
/* physical button layout and labels is like this:
|
||||
|
||||
(visitor team side) (home team side)
|
||||
COMP PITCH [SCORE] [INNING]
|
||||
[1] [2] [3] [1] [2] [3]
|
||||
NEW PITCHER PINCH HITTER NEW PITCHER PINCH HITTER
|
||||
|
||||
[4] [5] [6] [4] [5] [6]
|
||||
BACKWARD (pitch) FORWARD BACKWARD (pitch) FORWARD
|
||||
|
||||
[7] [8] [9] [7] [8] [9]
|
||||
|
||||
BUNT NORMAL HR SWING BUNT NORMAL HR SWING
|
||||
[CLEAR] [0] [ENTER] [CLEAR] [0] [ENTER]
|
||||
SLOW CURVE FAST SLOW CURVE FAST
|
||||
*/
|
||||
|
||||
static INPUT_PORTS_START( mwcbaseb )
|
||||
PORT_START("IN.0") // D9 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("P2 4") // note: P1 = left/visitor, P2 = right/home
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("P2 3")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_NAME("P2 2")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_NAME("P2 1")
|
||||
|
||||
PORT_START("IN.1") // D10 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("P2 8")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("P2 7")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("P2 6")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("P2 5")
|
||||
|
||||
PORT_START("IN.2") // D11 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("P2 Enter")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("P2 Clear")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("P2 0")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("P2 9")
|
||||
|
||||
PORT_START("IN.3") // D12 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Inning")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Score")
|
||||
|
||||
PORT_START("IN.4") // D13 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("P1 Enter")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("P1 Clear")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("P1 0")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("P1 9")
|
||||
|
||||
PORT_START("IN.5") // D14 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("P1 8")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("P1 7")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("P1 6")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("P1 5")
|
||||
|
||||
PORT_START("IN.6") // D15 port R4x
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("P1 4")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("P1 3")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("P1 2")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("P1 1")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const INT16 mwcbaseb_speaker_levels[] = { 0, 32767, -32768, 0 };
|
||||
|
||||
static MACHINE_CONFIG_START( mwcbaseb, mwcbaseb_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
|
||||
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(mwcbaseb_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(mwcbaseb_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(mwcbaseb_state, plate_w))
|
||||
MCFG_HMCS40_READ_R_CB(4, READ8(mwcbaseb_state, input_r))
|
||||
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(mwcbaseb_state, speaker_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(mwcbaseb_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_D_CB(WRITE16(mwcbaseb_state, grid_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
|
||||
|
||||
/* no video! */
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SPEAKER_LEVELS(4, mwcbaseb_speaker_levels)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Parker Brothers Q*Bert
|
||||
@ -2759,6 +2922,13 @@ ROM_START( gdigdug )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( mwcbaseb )
|
||||
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "hd38820a09", 0x0000, 0x1000, CRC(25ba7dc0) SHA1(69e0a867fdcf07b454b1faf835e576ae782432c0) )
|
||||
ROM_CONTINUE( 0x1e80, 0x0100 )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( pbqbert )
|
||||
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "hd38820a70", 0x0000, 0x1000, CRC(be7c80b4) SHA1(0617a80ef7fe188ea221de32e760d45fd4318c67) )
|
||||
@ -2811,6 +2981,8 @@ CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakke
|
||||
CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
|
||||
CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
|
||||
|
||||
CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, driver_device, 0, "Mattel", "World Championship Baseball", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
|
||||
|
||||
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
|
||||
|
||||
CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
|
||||
|
@ -82,6 +82,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "includes/hh_tms1k.h"
|
||||
#include "sound/beep.h"
|
||||
|
||||
// internal artwork
|
||||
#include "amaztron.lh"
|
||||
@ -1491,6 +1492,19 @@ MACHINE_CONFIG_END
|
||||
* TMS1100 MP1221 (die labeled MP1221)
|
||||
* 4 7seg LEDs(rightmost one unused), and other LEDs behind bezel, 1bit sound
|
||||
|
||||
lamp translation table: led zz from game PCB = MESS lampyx:
|
||||
|
||||
0 = - 10 = lamp44 20 = lamp53 30 = lamp95 40 = lamp92
|
||||
1 = lamp30 11 = lamp45 21 = lamp54 31 = lamp85 41 = lamp93
|
||||
2 = lamp31 12 = - 22 = - 32 = lamp65 42 = lamp90
|
||||
3 = lamp32 13 = lamp50 23 = lamp60 33 = lamp74 43 = lamp91
|
||||
4 = lamp33 14 = lamp51 24 = lamp61 34 = lamp70
|
||||
5 = lamp34 15 = lamp52 25 = lamp62 35 = lamp71
|
||||
6 = lamp40 16 = - 26 = lamp63 36 = lamp80
|
||||
7 = lamp41 17 = lamp72 27 = lamp64 37 = lamp81
|
||||
8 = lamp42 18 = lamp73 28 = lamp84 38 = lamp82
|
||||
9 = lamp43 19 = - 29 = lamp94 39 = lamp83
|
||||
|
||||
NOTE!: MESS external artwork is recommended
|
||||
|
||||
***************************************************************************/
|
||||
@ -1621,7 +1635,7 @@ MACHINE_CONFIG_END
|
||||
Gakken Poker
|
||||
* PCB label POKER. gakken
|
||||
* TMS1370 MP2105 (die labeled MP2105)
|
||||
* 11-digit cyan VFD display Itron FG1114B, 1bit sound
|
||||
* 11-digit cyan VFD display Itron FG1114B, oscillator sound
|
||||
|
||||
known releases:
|
||||
- Japan: Poker
|
||||
@ -1633,13 +1647,19 @@ class gpoker_state : public hh_tms1k_state
|
||||
{
|
||||
public:
|
||||
gpoker_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
: hh_tms1k_state(mconfig, type, tag),
|
||||
m_beeper(*this, "beeper")
|
||||
{ }
|
||||
|
||||
required_device<beep_device> m_beeper;
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
|
||||
protected:
|
||||
virtual void machine_reset();
|
||||
};
|
||||
|
||||
// handlers
|
||||
@ -1657,8 +1677,8 @@ void gpoker_state::prepare_display()
|
||||
|
||||
WRITE16_MEMBER(gpoker_state::write_r)
|
||||
{
|
||||
// R15: speaker out
|
||||
m_speaker->level_w(data >> 15 & 1);
|
||||
// R15: enable beeper
|
||||
m_beeper->set_state(data >> 15 & 1);
|
||||
|
||||
// R0-R6: input mux
|
||||
m_inp_mux = data & 0x7f;
|
||||
@ -1736,6 +1756,13 @@ static INPUT_PORTS_START( gpoker )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Bet") // BT
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void gpoker_state::machine_reset()
|
||||
{
|
||||
hh_tms1k_state::machine_reset();
|
||||
m_beeper->set_state(0);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( gpoker, gpoker_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -1751,7 +1778,7 @@ static MACHINE_CONFIG_START( gpoker, gpoker_state )
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ADD("beeper", BEEP, 2405) // astable multivibrator - C1 and C2 are 0.003uF, R1 and R4 are 1K, R2 and R3 are 100K
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -268,7 +268,8 @@ UINT8 hh_ucom4_state::read_inputs(int columns)
|
||||
This is Bambino's first game, it is not known if ET-01 exists. Emix Corp.
|
||||
wasn't initially a toy company, the first release was through Tomy. Emix
|
||||
created the Bambino brand afterwards. It is claimed to be the first
|
||||
computerized VFD game (true, unless TI's Speak & Spell is considered a game?)
|
||||
computerized VFD game (true, unless TI Speak & Spell(1978), or even Invicta
|
||||
Electronic Mastermind(1977) are considered games)
|
||||
|
||||
known releases:
|
||||
- Japan: "Missile Guerilla Warfare Maneuvers", published by Tomy
|
||||
|
@ -2199,6 +2199,7 @@ epacman2 // Entex
|
||||
ghalien // Gakken
|
||||
gckong // Gakken
|
||||
gdigdug // Gakken
|
||||
mwcbaseb // Mattel
|
||||
pbqbert // Parker Brothers
|
||||
mvbfree // Mego
|
||||
kingman // Tomy
|
||||
|
Loading…
Reference in New Issue
Block a user