3
3
4
4
/*
5
5
6
- Stella 8085 based hardware
7
- Electromechanical fruit machines
6
+ Elektronische Steuereinheit
7
+ 8085 based hardware
8
8
Lots of lamps and 4 7-segment LEDs
9
9
10
10
Main components:
11
11
Siemens SAB 8085AH-2-P (CPU)
12
12
Sharp LH5164D-10L (SRAM)
13
13
Siemens SAB 8256 A 2 P (MUART)
14
14
NEC D8279C-2 (keyboard & display interface)
15
- RTC 62421A
15
+ Sound S50240
16
16
17
- Is there a sound board or is it discrete?
17
+ 3 Different boards:
18
+ 4040-000-101 (6 ROM slots, TC5514 RAM) Parent is excellent
19
+ 4087-000-101 (3 ROM slots, RTC HD146818) Parent is doppelpot
20
+ 4109-000-101 (2 ROM slots, RTC 62421A) Parent is kniffi
21
+ 4382-000-101 (2 ROM slots, RTC 62421A) Parent is dicemstr
18
22
19
- Game reference: https://www.youtube.com/watch?v=NlB06dMxjME
23
+ Dice Master reference: https://www.youtube.com/watch?v=NlB06dMxjME
24
+ Merkur Disc reference: https://www.youtube.com/watch?v=1NjJPkzg9Mk
25
+ Nova Kniffi reference: https://www.youtube.com/watch?v=YBq2Z1irXek
20
26
*/
21
27
22
28
@@ -25,8 +31,8 @@ Game reference: https://www.youtube.com/watch?v=NlB06dMxjME
25
31
#include " cpu/i8085/i8085.h"
26
32
// #include "machine/i8256.h"
27
33
#include " machine/i8279.h"
34
+ #include " machine/mc146818.h"
28
35
#include " machine/msm6242.h"
29
- // #include "sound/???.h"
30
36
31
37
#include " speaker.h"
32
38
@@ -38,13 +44,16 @@ class stella8085_state : public driver_device
38
44
public:
39
45
stella8085_state (const machine_config &mconfig, device_type type, const char *tag) :
40
46
driver_device (mconfig, type, tag),
41
- m_maincpu (*this , " maincpu" )
47
+ m_maincpu (*this , " maincpu" ),
48
+ m_kdc (*this , " kdc" )
42
49
{ }
43
50
44
51
void dicemstr (machine_config &config);
52
+ void doppelpot (machine_config &config);
45
53
46
54
private:
47
55
required_device<cpu_device> m_maincpu;
56
+ required_device<i8279_device> m_kdc;
48
57
49
58
void program_map (address_map &map) ATTR_COLD;
50
59
void io_map (address_map &map) ATTR_COLD;
@@ -53,9 +62,9 @@ class stella8085_state : public driver_device
53
62
54
63
void stella8085_state::program_map (address_map &map)
55
64
{
56
- map (0x0000 , 0x7fff ).rom ();
57
- map (0x8000 , 0x9fff ). ram ();
58
- map (0xa000 , 0xffff ). rom ();
65
+ map (0x0000 , 0x3fff ).rom (); // ICE6
66
+ map (0x4000 , 0x7fff ). rom (); // ICD6
67
+ map (0xc000 , 0xc7ff ). ram (); // ICC6
59
68
}
60
69
61
70
void stella8085_state::io_map (address_map &map)
@@ -64,11 +73,50 @@ void stella8085_state::io_map(address_map &map)
64
73
65
74
66
75
static INPUT_PORTS_START ( dicemstr )
76
+ PORT_START(" DSW" )
77
+ PORT_DIPNAME(0x01 , 0x01 , " Restart Interrupt 7" )
78
+ PORT_DIPSETTING(0x01 , DEF_STR(Off))
79
+ PORT_DIPSETTING(0x00 , DEF_STR(On))
80
+ PORT_DIPNAME(0x02 , 0x02 , " Hold" )
81
+ PORT_DIPSETTING(0x02 , DEF_STR(Off))
82
+ PORT_DIPSETTING(0x00 , DEF_STR(On))
83
+ PORT_DIPNAME(0x04 , 0x04 , " Restart Interrupt 5" )
84
+ PORT_DIPSETTING(0x04 , DEF_STR(Off))
85
+ PORT_DIPSETTING(0x00 , DEF_STR(On))
86
+ PORT_DIPNAME(0x08 , 0x08 , " Reset" )
87
+ PORT_DIPSETTING(0x08 , DEF_STR(Off))
88
+ PORT_DIPSETTING(0x00 , DEF_STR(On))
89
+
90
+ PORT_START(" SERVICE1" ) // Row 6
91
+ PORT_BIT( 0x80 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Reset" ) // Col 7
92
+ PORT_BIT( 0x40 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Dauerlauf" )
93
+ PORT_BIT( 0x20 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Spielzähler" )
94
+ PORT_BIT( 0x10 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Münzspeicher" )
95
+ PORT_BIT( 0x08 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Hardware-Test" )
96
+ PORT_BIT( 0x04 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Auszahlquote" )
97
+ PORT_BIT( 0x02 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Foul" )
98
+ PORT_BIT( 0x01 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Gewinn" ) // Col 0
99
+
100
+ PORT_START(" SERVICE2" ) // Row 7
101
+ PORT_BIT( 0x80 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Hoch 1,-" )
102
+ PORT_BIT( 0x40 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Runter 1,-" )
103
+ PORT_BIT( 0x20 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Hoch Serie" )
104
+ PORT_BIT( 0x10 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Runter Serie" )
105
+ PORT_BIT( 0x08 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Hoch 0,10" )
106
+ PORT_BIT( 0x04 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Runter 0,10" )
107
+ PORT_BIT( 0x02 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Münzung" )
108
+ PORT_BIT( 0x01 , IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(" Initialisieren" )
109
+
110
+ PORT_START(" COINS" )
111
+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3 ) PORT_NAME(" DM 5.00" )
112
+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3 ) PORT_NAME(" DM 2.00" )
113
+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3 ) PORT_NAME(" DM 1.00" )
114
+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3 ) PORT_NAME(" DM 0.10" )
115
+
67
116
PORT_START(" INPUTS" )
68
117
PORT_BIT( 0xff , IP_ACTIVE_LOW, IPT_UNKNOWN )
69
118
INPUT_PORTS_END
70
119
71
-
72
120
void stella8085_state::dicemstr(machine_config &config)
73
121
{
74
122
I8085A (config, m_maincpu, 10 .240_MHz_XTAL / 2 ); // divider not verified
@@ -77,22 +125,117 @@ void stella8085_state::dicemstr(machine_config &config)
77
125
78
126
// I8256(config, "muart1", 10.240_MHz_XTAL / 2); // divider not verified
79
127
80
- I8279 (config, " kdc " , 10 .240_MHz_XTAL / 2 ); // divider not verified
128
+ I8279 (config, m_kdc , 10 .240_MHz_XTAL / 2 ); // divider not verified
81
129
82
130
RTC62421 (config, " rtc" , 32 .768_kHz_XTAL);
83
131
84
132
SPEAKER (config, " mono" ).front_center ();
85
133
}
86
134
135
+ void stella8085_state::doppelpot (machine_config &config)
136
+ {
137
+ I8085A (config, m_maincpu, 6 .144_MHz_XTAL);
138
+ m_maincpu->set_addrmap (AS_PROGRAM, &stella8085_state::program_map);
139
+ m_maincpu->set_addrmap (AS_IO, &stella8085_state::io_map);
140
+
141
+ // I8256(config, "muart1", 6.144_MHz_XTAL);
142
+
143
+ I8279 (config, m_kdc, 6 .144_MHz_XTAL);
144
+
145
+ MC146818 (config, " rtc" , 32 .768_kHz_XTAL);
146
+
147
+ SPEAKER (config, " mono" ).front_center ();
148
+ }
87
149
88
150
ROM_START ( dicemstr ) // curiously hand-written stickers say F3 but strings in ROM are F2
89
151
ROM_REGION ( 0x10000 , " maincpu" , 0 )
90
152
ROM_LOAD ( " stella_dice_master_f3_i.ice6" , 0x0000 , 0x8000 , CRC(9897fb87) SHA1(bfb18c1370d9bd12ec61622c0ebbad5c0138e1d8) )
91
153
ROM_LOAD ( " stella_dice_master_f3_ii.icd6" , 0x8000 , 0x8000 , CRC(9484cf3b) SHA1(e1104882eaba860ab984c1a37e2f97d4bed08829) ) // 0x0000 - 0x1fff is 0xff filled
92
154
ROM_END
155
+
156
+ ROM_START ( doppelpot )
157
+ ROM_REGION ( 0x9000 , " maincpu" , 0 )
158
+ ROM_LOAD ( " doppelpot.ice6" , 0x0000 , 0x4000 , CRC(b01d3307) SHA1(8364506e8169432ddec275ef5b53660c01dc209e) )
159
+ ROM_LOAD ( " doppelpot.icd6" , 0x4000 , 0x4000 , CRC(153708cb) SHA1(3d15b115ec39c1df42d4437226e83413f495c4d9) )
160
+ ROM_LOAD ( " doppelpot.icc5" , 0x8000 , 0x1000 , CRC(135dac6b) SHA1(10873ee64579245eac7069bf84d61550684e67de) )
161
+ ROM_END
162
+
163
+ ROM_START ( disc2000 )
164
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
165
+ ROM_LOAD ( " disc2000.ice6" , 0x0000 , 0x4000 , CRC(53a66005) SHA1(a5bb63abe8eb631a0fb09496ef6e0ee6c713985c) )
166
+ ROM_LOAD ( " disc2000.icd6" , 0x4000 , 0x4000 , CRC(787b6708) SHA1(be990f95b6d04cbe0b9832603204f2a81b0ace3f) )
167
+ ROM_END
168
+
169
+ ROM_START ( disc2001 )
170
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
171
+ ROM_LOAD ( " disc2001.ice6" , 0x0000 , 0x4000 , CRC(4d128fe1) SHA1(2b9b0a1296ff77b281173fb0fcf667ed3e3ece2b) )
172
+ ROM_LOAD ( " disc2001.icd6" , 0x4000 , 0x4000 , CRC(72f6560a) SHA1(3fdc3aaafcc2c185a19a27ccd511d8522fbe0c2e) )
173
+ ROM_END
174
+
175
+ ROM_START ( disc3000 )
176
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
177
+ ROM_LOAD ( " disc3000.ice6" , 0x0000 , 0x4000 , CRC(6e024e72) SHA1(7198c0cd844d4bc080b2d8654d32d53a04ce8bb4) )
178
+ ROM_LOAD ( " disc3000.icd6" , 0x4000 , 0x4000 , CRC(ad88715a) SHA1(660f4044e8f24ad59767ce025966475f9fd56885) )
179
+ ROM_END
180
+
181
+ ROM_START ( elitedisc )
182
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
183
+ ROM_LOAD ( " elitedisc.ice6" , 0x0000 , 0x4000 , CRC(7f7a2f30) SHA1(01e3ce5fce2c9d51d3f4b8aab7dd67ed4b26d8f4) )
184
+ ROM_LOAD ( " elitedisc.icd6" , 0x4000 , 0x4000 , CRC(e56f2360) SHA1(691a6762578daca6ce4581418761dcc07c291fab) )
185
+ ROM_END
186
+
187
+ ROM_START ( excellent )
188
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
189
+ ROM_LOAD ( " excellent.ice5" , 0x0000 , 0x0800 , CRC(b4c573b5) SHA1(5b01b68b8abd48bd293bc9aa507c3285a6e7550f) )
190
+ ROM_LOAD ( " excellent.ice6" , 0x0800 , 0x0800 , CRC(f1d53581) SHA1(7aef66149f3427b287d3e9d86cc198dc1ed40d7c) )
191
+ ROM_LOAD ( " excellent.icd5" , 0x1000 , 0x0800 , CRC(912a5f59) SHA1(3df3ca7eaef8de8e13e93f6a1e6975f8da7ed7a1) )
192
+ ROM_LOAD ( " excellent.icd6" , 0x1800 , 0x0800 , CRC(5a2b95b4) SHA1(b0d17b327664e8680b163c872109769c4ae42039) )
193
+ ROM_LOAD ( " excellent.icc5" , 0x2000 , 0x0800 , CRC(ae424805) SHA1(14e12ceebd9fbf6eba96c168e8e7b797b34f7ca5) )
194
+ ROM_END
195
+
196
+ ROM_START ( extrablatt )
197
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
198
+ ROM_LOAD ( " extrablatt.ice6" , 0x0000 , 0x4000 , CRC(6885cf89) SHA1(30acd5511fb73cb22ae4230fedcf40f385c0d261) )
199
+ ROM_LOAD ( " extrablatt.icd6" , 0x4000 , 0x4000 , CRC(5c0cb9bd) SHA1(673d5f8dec7ccce1c4f39dce6be1e9d1ed699047) )
200
+ ROM_END
201
+
202
+ ROM_START ( glucksstern )
203
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
204
+ ROM_LOAD ( " glucksstern.ice6" , 0x0000 , 0x4000 , CRC(8e969bae) SHA1(bf66d491932b77dab4c6b15ec7fbf470223636ac) )
205
+ ROM_LOAD ( " glucksstern.icd6" , 0x4000 , 0x4000 , CRC(f31b860a) SHA1(7b016bb7d0699cfe7165c0abb2c1bbcb944cdc86) )
206
+ ROM_END
207
+
208
+ ROM_START ( juwel )
209
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
210
+ ROM_LOAD ( " juwel.ice6" , 0x0000 , 0x4000 , CRC(6fd9fd6a) SHA1(2ff982750d87be1bc7757bde706d9e329ac29785) )
211
+ ROM_LOAD ( " juwel.icd6" , 0x4000 , 0x4000 , CRC(a9ec9e36) SHA1(f7a2b5866988116e0bbeb8a120cae9083d651c5b) )
212
+ ROM_END
213
+
214
+ ROM_START ( karoas )
215
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
216
+ ROM_LOAD ( " karoas.ice6" , 0x0000 , 0x4000 , CRC(71c4c39d) SHA1(b188896838a788d5bfc7b18f1bb423a06fe5fcc6) )
217
+ ROM_LOAD ( " karoas.icd6" , 0x4000 , 0x4000 , CRC(e1b131bd) SHA1(dc2fbfaf86fa5b161d17a563eae2bc8fc4d19395) )
218
+ ROM_END
219
+
220
+ ROM_START ( kniffi )
221
+ ROM_REGION ( 0x8000 , " maincpu" , 0 )
222
+ ROM_LOAD ( " kniffi.ice6" , 0x0000 , 0x4000 , CRC(57df5d69) SHA1(78bc9cabf0b4bec5f8c2578d55011f0adc034798) )
223
+ ROM_LOAD ( " kniffi.icd6" , 0x4000 , 0x4000 , CRC(1c129cec) SHA1(bad22f18b94c16dba36995ff8daf4d48f4d082a2) )
224
+ ROM_END
93
225
94
226
} // anonymous namespace
95
227
96
228
97
229
// 'STELLA DICE MASTER F2' and 'COPYRIGHT BY ADP LUEBBECKE GERMANY 1993' in ROM
98
230
GAME ( 1993 , dicemstr, 0 , dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " Stella" , " Dice Master" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
231
+ GAME( 1987 , disc2000, doppelpot, doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Disc 2000" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
232
+ GAME( 1987 , disc2001, doppelpot, doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Disc 2001" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
233
+ GAME( 1989 , disc3000, doppelpot, doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Disc 3000" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
234
+ GAME( 1986 , doppelpot, 0 , doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " Nova" , " Doppelpot" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
235
+ GAME( 1986 , elitedisc, doppelpot, doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Elite Disc" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
236
+ GAME( 1988 , extrablatt, kniffi, dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Extrablatt" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
237
+ GAME( 1982 , excellent, 0 , doppelpot, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Excellent" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
238
+ GAME( 1998 , glucksstern, kniffi, dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Glücks-Stern" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
239
+ GAME( 1988 , juwel, kniffi, dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Juwel" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
240
+ GAME( 1992 , karoas, kniffi, dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " ADP" , " Karo As" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
241
+ GAME( 1987 , kniffi, 0 , dicemstr, dicemstr, stella8085_state, empty_init, ROT0, " Nova" , " Kniffi" , MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK )
0 commit comments