1 // license:BSD-3-Clause
2 // copyright-holders:
3 
4 /*
5 Skeleton driver for Cirsa "Mini Super Fruits" and clones.
6 Known games on this hardware:
7  __________________________________________________
8  | Dumped | Game              | Manufacturer       |
9  +--------+-------------------+--------------------+
10  | YES    | Mini Super Fruits | Cirsa              |
11  | YES    | Lucky Player      | Cirsa              |
12  | YES    | Miss Bamby        | Automatics Pasqual |
13  | YES    | Golden Winer      | Reben              |
14  | NO     | Golden Fruits     | unknown            |
15  | NO     | St.-Tropez        | unknown            |
16  +-------------------------------------------------+
17 */
18 /*
19 Miss Bamby - Automatics Pasqual
20    _____________________________________________________________
21    |                             _______                        |
22    |                             |_PROM_|      ____________     |
23    |                  __________________       | EMPTY     |    |
24    |                  | M5L8085AP       |      |_SOCKET____|    |
25    |                  |_________________|      ____________     |
26    |                       ______________      | ROM1      |    |
27    |         XTAL          |M5L8212P    |      |___________|    |
28    |   __   6.144          |____________|      ____________     |
29    |   |R|                                     | ROM0      |    |
30  __|                                           |___________|    |
31 |__| ________  ________  ___________________   ____________     |
32 |__| |ULN2003A |ULN2003A | M5L8155P         |  |_D5101LC__|     |
33 |__|                     |__________________|  ____________     |
34 |__|                     ________   _________  |_D5101LC__|     |
35 |__|           _______   |74LS393|  |74LS74B1                   |
36 |__|           |7407N |                        ________         |
37 |__|                     ________   ________   |GD4001B|        |
38 |__|                     |74LS14_|  |74LS153|        _________  |
39 |__|                                          ____  | BATT    | |
40 |__|   _______           ___________________  |D  | | 3.6V    | |
41 |__|   |LM380N|          |    AY-3-8910     | |I  | |_________| |
42 |__|                     |__________________| |P  | ______      |
43 |__|                                          |S__| LM311N      |
44    |____________________________________________________________|
45 
46 Golden Winner - Reben
47    _____________________________________________________________
48    |                             _______                        |
49    |                            DM74S188N      ____________     |
50    |                  __________________       | EMPTY     |    |
51    |                  | NEC D8085AC     |      |_SOCKET____|    |
52    |                  |_________________|      ____________     |
53    |                       ______________      | ROM-B     |    |
54    |         XTAL          |INS/DP8212N |      |___________|    |
55    |   __   6.000          |____________|      ____________     |
56    |   |R|                                     | ROM-A     |    |
57  __|                                           |___________|    |
58 |__| ________  ________  ___________________   ____________     |
59 |__| |_L203B_| |_L203B_| | NEC D8155HC      |  |MCM51L01P45|    |
60 |__|                     |__________________|  ____________     |
61 |__|                     ________   _________  |SCL 5101E-1|    |
62 |__|           _______   |74LS393N  |DM7474N|                   |
63 |__|           |7407N |                        ________         |
64 |__|                     ________   ________   |GD4001B|        |
65 |__|                     SN74LS14N  DM74LS153N                  |
66 |__|                                          ____              |
67 |__|   _______           ___________________  |D  |             |
68 |__|   |LM380N|          |    AY-3-8910     | |I  |             |
69 |__|                     |__________________| |P  | ______      |
70 |__|                                          |S__| CA311E      |
71    |____________________________________________________________|
72 */
73 
74 #include "emu.h"
75 #include "emupal.h"
76 #include "speaker.h"
77 #include "cpu/i8085/i8085.h"
78 #include "machine/i8155.h"
79 //#include "machine/nvram.h"
80 #include "sound/ay8910.h"
81 
82 class missbamby_state : public driver_device
83 {
84 public:
missbamby_state(const machine_config & mconfig,device_type type,const char * tag)85 	missbamby_state(const machine_config &mconfig, device_type type, const char *tag)
86 		: driver_device(mconfig, type, tag),
87 		m_maincpu(*this, "maincpu")
88 	{
89 	}
90 
91 	void missbamby(machine_config &config);
92 	void gldwinner(machine_config &config);
93 
94 private:
95 	required_device<cpu_device> m_maincpu;
96 
97 	void io_map(address_map &map);
98 	void prg_map(address_map &map);
99 
100 	virtual void machine_start() override;
101 };
102 
prg_map(address_map & map)103 void missbamby_state::prg_map(address_map &map) // preliminary, everything to be taken with a grain of salt
104 {
105 	map(0x0000, 0x3fff).rom();
106 	map(0x5000, 0x50ff).ram();
107 	//map(0x6000, 0x6000).r(); // only read once at start-up?
108 	map(0x8000, 0x80ff).ram();
109 	map(0x8800, 0x88ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
110 	map(0x8900, 0x8907).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
111 	map(0x9000, 0x9000).r("psg", FUNC(ay8910_device::data_r));
112 	map(0x9001, 0x9001).w("psg", FUNC(ay8910_device::address_w));
113 	map(0x9002, 0x9002).w("psg", FUNC(ay8910_device::data_w));
114 }
115 
io_map(address_map & map)116 void missbamby_state::io_map(address_map &map)
117 {
118 	map.global_mask(0xff);
119 	map.unmap_value_high();
120 }
121 
122 
123 static INPUT_PORTS_START( missbamby )
124 	PORT_START("IN0")
125 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
126 
127 	PORT_START("DSW1")
128 	PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1")
129 	PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2")
130 	PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3")
131 	PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4")
132 	PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5")
133 	PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6")
134 	PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7")
135 	PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8")
136 INPUT_PORTS_END
137 
138 
machine_start()139 void missbamby_state::machine_start()
140 {
141 }
142 
143 
missbamby(machine_config & config)144 void missbamby_state::missbamby(machine_config &config)
145 {
146 	I8085A(config, m_maincpu, 6.144_MHz_XTAL); // M5L8085AP
147 	m_maincpu->set_addrmap(AS_PROGRAM, &missbamby_state::prg_map);
148 	m_maincpu->set_addrmap(AS_IO, &missbamby_state::io_map);
149 
150 	I8155(config, "i8155", 6.144_MHz_XTAL/2); // Guessed divisor
151 
152 	SPEAKER(config, "mono").front_center();
153 	ay8910_device &psg(AY8910(config, "psg", 6.144_MHz_XTAL / 4));
154 	psg.port_a_read_callback().set_ioport("DSW1");
155 	psg.add_route(ALL_OUTPUTS, "mono", 1.0); // guess
156 }
157 
gldwinner(machine_config & config)158 void missbamby_state::gldwinner(machine_config &config)
159 {
160 	I8085A(config, m_maincpu, 6_MHz_XTAL); // NEC D8085AC
161 	m_maincpu->set_addrmap(AS_PROGRAM, &missbamby_state::prg_map);
162 	m_maincpu->set_addrmap(AS_IO, &missbamby_state::io_map);
163 
164 	I8155(config, "i8155", 6_MHz_XTAL/2); // NEC D8155HC, guessed divisor
165 
166 	SPEAKER(config, "mono").front_center();
167 	ay8910_device &psg(AY8910(config, "psg", 6_MHz_XTAL / 4));
168 	psg.port_a_read_callback().set_ioport("DSW1");
169 	psg.port_b_read_callback().set_ioport("IN0");
170 	psg.add_route(ALL_OUTPUTS, "mono", 1.0); // guess
171 }
172 
173 ROM_START( minisupf )
174 	ROM_REGION(0x4000, "maincpu", 0)
175 	ROM_LOAD( "mini_av_1.4.a", 0x0000, 0x0800, CRC(d29a6468) SHA1(9a6d25a6d5602aff226340e8b4a87aa8a55e7c51) )
176 	ROM_LOAD( "mini_av_1.4.b", 0x0800, 0x0800, CRC(0ebf0bd8) SHA1(d4a1a551dbeb56f16f17d7c02f926364132fb4a5) )
177 	ROM_LOAD( "mini_av_1.4.c", 0x1000, 0x0800, CRC(5f976549) SHA1(5b81e71967719a913c51fe2e027f4477d507c5b6) )
178 
179 	ROM_REGION(0x20, "prom", 0)
180 	ROM_LOAD( "mini_18sa030n.bin", 0x00, 0x20, CRC(fa7822eb) SHA1(586705f64a5fb95e5dd1c7bfc929dccfebc3ec49) )
181 ROM_END
182 
183 // The 8155 was missing on this PCB, but probably it was just removed for reusing it elsewhere.
184 ROM_START( luckyplr )
185 	ROM_REGION(0x4000, "maincpu", 0)
186 	ROM_LOAD( "lucky_player_24.a", 0x0000, 0x1000, CRC(11a3daf2) SHA1(239d2e53f05eecfcbc0cf5e037df21e3851e4d69) )
187 	ROM_LOAD( "lucky_player.b",    0x1000, 0x1000, CRC(5578abba) SHA1(1daf3de6c12792043fbea533d619e81b092a0a7d) )
188 
189 	ROM_REGION(0x20, "prom", 0)
190 	ROM_LOAD( "lucky_player_18sa030n.bin", 0x00, 0x20, CRC(cf80f260) SHA1(b965017aa871454c54f6175fee486eea810a9c2e) )
191 ROM_END
192 
193 ROM_START( msbamby )
194 	ROM_REGION(0x4000, "maincpu", 0)
195 	ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(7b5efbd9) SHA1(abb4b4432021945aee474c4bdd83979f6460c671) )
196 	ROM_LOAD( "2.bin", 0x2000, 0x2000, CRC(6048d5cd) SHA1(a3bbf43b1474de75aef9957b967ead96b9a18fc5) )
197 
198 	ROM_REGION(0x20, "prom", 0)
199 	ROM_LOAD( "prom.bin", 0x00, 0x20, CRC(f7013c11) SHA1(6e4e6d7f2a041d44359a7f5662bb4302da234ace) ) // Unknown manufacturer, dumped as 82s123
200 ROM_END
201 
202 ROM_START( gwinner )
203 	ROM_REGION(0x4000, "maincpu", 0)
204 	ROM_LOAD( "reben_sa_gw-a_chk_8811_crc_2677.bin", 0x0000, 0x1000, CRC(ffcb4ba0) SHA1(2bc0dfc2b35a3a6cc3addf69a4c8916cc54347e4) )
205 	ROM_LOAD( "reben_sa_gw-b_chk_f884_crc_7822.bin", 0x2000, 0x1000, CRC(0146a4ff) SHA1(d23048ba0f23daf5caba07affc57e88ab09ca91e) )
206 
207 	ROM_REGION(0x20, "prom", 0)
208 	ROM_LOAD( "dm74s188n.bin", 0x00, 0x20, NO_DUMP )
209 ROM_END
210 
211 ROM_START( unkslot )
212 	ROM_REGION(0x4000, "maincpu", 0)
213 	ROM_LOAD( "tms2564jl.bin", 0x0000, 0x2000, CRC(43fa54fb) SHA1(2e0d0883deb20d68e46d3c5c5c98508c9b5d5411) )
214 	ROM_LOAD( "d2764d.bin",    0x2000, 0x1000, CRC(b7c55fc2) SHA1(2dfcc35821971c27178522afe9db1d18e12b3a42) ) // 1xxxxxxxxxxx = 0xFF
215 
216 	ROM_REGION(0x20, "prom", 0)
217 	ROM_LOAD( "n83s23n.bin",   0x00, 0x20, CRC(ea598b2c) SHA1(c0d6367ed2381a4a0f22780773ff4777569e88ab) )
218 ROM_END
219 
220 
221 GAME( 1981, minisupf, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Cirsa",              "Mini Super Fruits", MACHINE_IS_SKELETON_MECHANICAL )
222 GAME( 1981, luckyplr, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Cirsa",              "Lucky Player",      MACHINE_IS_SKELETON_MECHANICAL )
223 GAME( 198?, msbamby,  0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Automatics Pasqual", "Miss Bamby",        MACHINE_IS_SKELETON_MECHANICAL )
224 GAME( 198?, unkslot,  0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "<unknown>",          "unknown MGA or Costa Net slot machine",     MACHINE_IS_SKELETON_MECHANICAL )
225 GAME( 1983, gwinner,  0, gldwinner, missbamby, missbamby_state, empty_init, ROT0, "Reben SA",           "Golden Winner",     MACHINE_IS_SKELETON_MECHANICAL )
226