mirror of
https://github.com/holub/mame
synced 2025-05-23 22:20:01 +03:00
(MESS) added preliminary comp4 driver. [Sean Riddle, hap]
This commit is contained in:
parent
67f40f6711
commit
95a6f484e5
164
src/mess/drivers/comp4.c
Normal file
164
src/mess/drivers/comp4.c
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Milton Bradley Comp IV
|
||||||
|
* TMC0904NL CP0904A (die labeled 4A0970D-04A)
|
||||||
|
|
||||||
|
This is a handheld Mastermind game; a code-breaking game where the player
|
||||||
|
needs to find out the correct sequence of colours (numbers in our case).
|
||||||
|
It is known as Logic 5 in Europe, and as Pythaugoras in Japan.
|
||||||
|
|
||||||
|
Press the R key to start, followed by a set of unique numbers and E.
|
||||||
|
Refer to the official manual for more information.
|
||||||
|
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- write_r doesn't look right, maybe something missing in cpu emulation
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/tms0980/tms0980.h"
|
||||||
|
#include "sound/speaker.h"
|
||||||
|
|
||||||
|
// master clock is cpu internal, the value below is an approximation
|
||||||
|
#define COMP4_CLOCK (250000)
|
||||||
|
|
||||||
|
|
||||||
|
class comp4_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
comp4_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag),
|
||||||
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_button_matrix(*this, "IN")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_ioport_array<3> m_button_matrix;
|
||||||
|
|
||||||
|
UINT16 m_o;
|
||||||
|
|
||||||
|
DECLARE_READ8_MEMBER(read_k);
|
||||||
|
DECLARE_WRITE16_MEMBER(write_o);
|
||||||
|
DECLARE_WRITE16_MEMBER(write_r);
|
||||||
|
|
||||||
|
virtual void machine_start();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
I/O
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
READ8_MEMBER(comp4_state::read_k)
|
||||||
|
{
|
||||||
|
UINT8 k = 0;
|
||||||
|
|
||||||
|
if (m_o == 0)
|
||||||
|
k |= m_button_matrix[0]->read();
|
||||||
|
else if (m_o == 1)
|
||||||
|
k |= m_button_matrix[1]->read();
|
||||||
|
else if (m_o == 2)
|
||||||
|
k |= m_button_matrix[2]->read();
|
||||||
|
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(comp4_state::write_r)
|
||||||
|
{
|
||||||
|
// LEDs?
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(comp4_state::write_o)
|
||||||
|
{
|
||||||
|
// O0-O2: input mux
|
||||||
|
// other bits: some LEDs?
|
||||||
|
m_o = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( comp4 )
|
||||||
|
PORT_START("IN.0")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("R")
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
|
||||||
|
|
||||||
|
PORT_START("IN.1")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
|
||||||
|
|
||||||
|
PORT_START("IN.2")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("E")
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON11 ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON12 ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Machine Config
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
void comp4_state::machine_start()
|
||||||
|
{
|
||||||
|
m_o = 0;
|
||||||
|
save_item(NAME(m_o));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const UINT16 comp4_output_pla[0x20] =
|
||||||
|
{
|
||||||
|
/* O output PLA configuration currently unknown */
|
||||||
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||||
|
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||||
|
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
||||||
|
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_START( comp4, comp4_state )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
MCFG_CPU_ADD("maincpu", TMS0970, COMP4_CLOCK)
|
||||||
|
MCFG_TMS1XXX_OUTPUT_PLA(comp4_output_pla)
|
||||||
|
MCFG_TMS1XXX_READ_K(READ8(comp4_state, read_k))
|
||||||
|
MCFG_TMS1XXX_WRITE_O(WRITE16(comp4_state, write_o))
|
||||||
|
MCFG_TMS1XXX_WRITE_R(WRITE16(comp4_state, write_r))
|
||||||
|
|
||||||
|
/* no video! */
|
||||||
|
|
||||||
|
/* no sound! */
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Game driver(s)
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
ROM_START( comp4 )
|
||||||
|
ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 )
|
||||||
|
ROM_LOAD( "cp0904a", 0x0000, 0x0400, CRC(c502c8a1) SHA1(f82ff1a85c4849621d32344964d8b2233fc978d0) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
@ -296,6 +296,7 @@ intvsrs // Intellivision (Sears License) - 19??
|
|||||||
intvoice // Mattel Intellivision + IntelliVoice expansion - 1982
|
intvoice // Mattel Intellivision + IntelliVoice expansion - 1982
|
||||||
|
|
||||||
// Milton Bradley
|
// Milton Bradley
|
||||||
|
comp4
|
||||||
microvsn // MicroVision - 1979
|
microvsn // MicroVision - 1979
|
||||||
simon
|
simon
|
||||||
|
|
||||||
|
@ -1352,6 +1352,7 @@ $(MESSOBJ)/matsushi.a: \
|
|||||||
$(MESS_DRIVERS)/myb3k.o \
|
$(MESS_DRIVERS)/myb3k.o \
|
||||||
|
|
||||||
$(MESSOBJ)/mb.a: \
|
$(MESSOBJ)/mb.a: \
|
||||||
|
$(MESS_DRIVERS)/comp4.o \
|
||||||
$(MESS_DRIVERS)/microvsn.o \
|
$(MESS_DRIVERS)/microvsn.o \
|
||||||
$(MESS_DRIVERS)/simon.o \
|
$(MESS_DRIVERS)/simon.o \
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user