1 // license:BSD-3-Clause
2 // copyright-holders:
3
4 /*
5 Skeleton driver for early 80's slot machines manufactured by Hobby Play.
6 Hobby Play did about eight different machines, but they're mostly unknown.
7
8 Most Hobby Play slot machines (Gran Gol, etc.) use three 5x7 dot-matrix displays:
9
10 o o o o o o o o o o o o o o o
11 o o o o o o o o o o o o o o o
12 o o o o o o o o o o o o o o o
13 o o o o o o o o o o o o o o o
14 o o o o o o o o o o o o o o o
15 o o o o o o o o o o o o o o o
16 o o o o o o o o o o o o o o o
17
18
19 PCB marked Hobby Play CIC 003 B
20
21 Z80 CPU
22 4'433'618 XTAL
23 2 x INS8255N (P8255)
24 1 x 8 dips bank
25 1 x NE555P (near the Z80)
26 2 x Intersil D2114 (SRAM)
27 various TTL chips
28 */
29
30 #include "emu.h"
31 #include "emupal.h"
32 #include "speaker.h"
33 #include "cpu/z80/z80.h"
34 #include "machine/i8255.h"
35
36 class hobbyplay_state : public driver_device
37 {
38 public:
hobbyplay_state(const machine_config & mconfig,device_type type,const char * tag)39 hobbyplay_state(const machine_config &mconfig, device_type type, const char *tag)
40 : driver_device(mconfig, type, tag),
41 m_maincpu(*this, "maincpu")
42 {
43 }
44
45 void hobbyplay(machine_config &config);
46
47 private:
48 required_device<cpu_device> m_maincpu;
49
50 void prg_map(address_map &map);
51 };
52
prg_map(address_map & map)53 void hobbyplay_state::prg_map(address_map &map)
54 {
55 map(0x0000, 0x07ff).rom().region("maincpu", 0);
56 map(0x0800, 0x0bff).ram();
57 map(0x1000, 0x1003).rw("ppi0", FUNC(i8255_device::read), FUNC(i8255_device::write));
58 map(0x1800, 0x1803).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
59 }
60
61 static INPUT_PORTS_START( hobbyplay )
62 PORT_START("IN0")
63 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
64
65 PORT_START("IN1")
66 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
67
68 PORT_START("DSW0")
69 PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW0:1")
70 PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW0:2")
71 PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW0:3")
72 PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW0:4")
73 PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW0:5")
74 PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW0:6")
75 PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW0:7")
76 PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW0:8")
77 INPUT_PORTS_END
78
79
hobbyplay(machine_config & config)80 void hobbyplay_state::hobbyplay(machine_config &config)
81 {
82 Z80(config, m_maincpu, 4'433'618);
83 m_maincpu->set_addrmap(AS_PROGRAM, &hobbyplay_state::prg_map);
84
85 i8255_device &ppi0(I8255(config, "ppi0"));
86 ppi0.in_pa_callback().set_ioport("IN0");
87 ppi0.in_pb_callback().set_ioport("IN1");
88 ppi0.in_pc_callback().set_ioport("DSW0");
89 //ppi0.out_pc_callback().set(hobbyplay_state::);
90
91 I8255(config, "ppi1");
92 //ppi1.out_pc_callback().set(hobbyplay_state::);
93
94 SPEAKER(config, "mono").front_center();
95 // sound? possibly very simple discrete
96 }
97
98
99 ROM_START( unkhpslt )
100 ROM_REGION(0x800, "maincpu", 0)
101 ROM_LOAD( "hobby_play_661.bin", 0x0000, 0x0800, CRC(e721d720) SHA1(23d84d2013f1ec42b1bcf6983ee28093071d4b8e) )
102 ROM_END
103
104 GAME( 198?, unkhpslt, 0, hobbyplay, hobbyplay, hobbyplay_state, empty_init, ROT0, "Hobby Play", "unknown Hobby Play slot machine", MACHINE_IS_SKELETON_MECHANICAL )
105