summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/opercoin.cpp
blob: c6a114e2f1d58bf868bf0906fdd08aad4d9e5bd5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// license:BSD-3-Clause
// copyright-holders:

/*
Skeleton driver for Oper Coin "Multi Baby" slot machine.
  ___________________________________________________________________
 |      ········           ········   ····                          |
 |   _________      _________  _________  _________     _________   |
 |  |________|  ·  |________| |_EMPTY__| |_EMPTY__| ·  |________|   |
 |              ·   _____                           ·             ..|
 |              ·  |BATT|                           ·             ..|
 |              ·  |_6V_|                           ·             ..|
 |   ________    ________    ________    ________    ________       |
 |  |74LS259|   |74LS259|   |74LS259|   |74LS259|   |74LS259|       |
 |..       ······               ······               ······        ·|
 |.. ________    ________    ________    ________    ________      ·|
 |..|74LS259|   |74LS259|   |74LS259|   |74LS259|   |74LS259|      ·|
 |.. ___    ________                                                |
 |.. |EM|  |TC538BP|                                                |
 |.. |PT|   ________                                                |
 |.. |Y |  |TC538BP|   _____________                                |
 |.. |__|   ________  | EMPTY      |                                |
 | ___     |74LS74APC |____________| ________                       |
 | |EM|     ________  ______________|SCL4011BE ________________ ____|
 | |PT|    |74LS363| | EPROM       | ________ | GI AY-3-8910  ||4x ||
 | |Y |     ________ |_____________||_74LS02| |_______________||DIPS|
 | |__|Xtal|74LS138| ________________                               |
 |·___ 8.000        | Z80A CPU      |                  ________   · |
 |·|  |MHz  ::::::: |_______________|                 |ULN28030   · |
 |·|  |<- ULN2803A            ··········                          · |
 |·|__| ······                ········        ········            · |
 |__________________________________________________________________|

*/

#include "emu.h"
#include "speaker.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"

namespace {

class multibaby_state : public driver_device
{
public:
	multibaby_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu")
	{
	}

	void multibaby(machine_config &config);

private:
	required_device<cpu_device> m_maincpu;

	void prg_map(address_map &map);
};

void multibaby_state::prg_map(address_map &map)
{
	map(0x0000, 0x3fff).rom();
	map(0x4000, 0x47ff).ram();
	//map(0x8000, 0x8000).w("psg", FUNC(ay8910_device::address_w));
	//map(0x8001, 0x8001).r("psg", FUNC(ay8910_device::data_r));
	//map(0x8002, 0x8002).w("psg", FUNC(ay8910_device::data_w));
	//map(0xe000, 0xe000).nopw();
}

static INPUT_PORTS_START( multibaby )
	PORT_START("DSW1")
	PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1")
	PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2")
	PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3")
	PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4")
INPUT_PORTS_END


void multibaby_state::multibaby(machine_config &config)
{
	Z80(config, m_maincpu, 8.000_MHz_XTAL / 2);
	m_maincpu->set_addrmap(AS_PROGRAM, &multibaby_state::prg_map);

	SPEAKER(config, "mono").front_center();
	ay8910_device &psg(AY8910(config, "psg", 8.000_MHz_XTAL / 4)); // Divisor unknown
	psg.port_a_read_callback().set_ioport("DSW1");
	psg.add_route(ALL_OUTPUTS, "mono", 1.0); // Guess
}

ROM_START( multibaby )
	ROM_REGION(0x4000, "maincpu", 0)
	ROM_LOAD( "oc_multi_baby_b-1923.ic13", 0x000, 0x4000, CRC(5d1bffe2) SHA1(536492b093dd247ba0440d499920d526ee7ea439) )
ROM_END

} // Anonymous namespace

GAME( 1990, multibaby, 0, multibaby, multibaby, multibaby_state, empty_init, ROT0, "Oper Coin", "Multi Baby", MACHINE_IS_SKELETON_MECHANICAL )