1
/* Electrocoin Pyramid HW type */
4
#include "cpu/z180/z180.h"
6
class ecoinf3_state : public driver_device
9
ecoinf3_state(const machine_config &mconfig, device_type type, const char *tag)
10
: driver_device(mconfig, type, tag) { }
13
static WRITE8_HANDLER( py_port58_out_w )
18
static ADDRESS_MAP_START( pyramid_memmap, AS_PROGRAM, 8 )
19
AM_RANGE(0x0000, 0xdfff) AM_ROM
20
AM_RANGE(0xe000, 0xffff) AM_RAM
23
static ADDRESS_MAP_START( pyramid_portmap, AS_IO, 8 )
24
ADDRESS_MAP_GLOBAL_MASK(0xff)
26
AM_RANGE(0x58, 0x58) AM_WRITE(py_port58_out_w)
30
static ADDRESS_MAP_START( pyramid_submap, AS_PROGRAM, 8 )
31
AM_RANGE(0xe000, 0xffff) AM_ROM
37
static INPUT_PORTS_START( ecoinf3 )
39
PORT_DIPNAME( 0x01, 0x01, "IN0:01" )
40
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
41
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
42
PORT_DIPNAME( 0x02, 0x02, "IN0:02" )
43
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
44
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
45
PORT_DIPNAME( 0x04, 0x04, "IN0:04" )
46
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
47
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
48
PORT_DIPNAME( 0x08, 0x08, "IN0:08" )
49
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
50
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
51
PORT_DIPNAME( 0x10, 0x10, "IN0:10" )
52
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
53
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
54
PORT_DIPNAME( 0x20, 0x20, "IN0:20" )
55
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
56
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
57
PORT_DIPNAME( 0x40, 0x40, "IN0:40" )
58
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
59
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
60
PORT_DIPNAME( 0x80, 0x80, "IN0:80" )
61
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
62
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
65
PORT_DIPNAME( 0x01, 0x01, "IN1:01" )
66
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
67
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
68
PORT_DIPNAME( 0x02, 0x02, "IN1:02" )
69
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
70
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
71
PORT_DIPNAME( 0x04, 0x04, "IN1:04" )
72
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
73
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
74
PORT_DIPNAME( 0x08, 0x08, "IN1:08" )
75
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
76
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
77
PORT_DIPNAME( 0x10, 0x10, "IN1:10" )
78
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
79
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
80
PORT_DIPNAME( 0x20, 0x20, "IN1:20" )
81
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
82
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
83
PORT_DIPNAME( 0x40, 0x40, "IN1:40" )
84
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
85
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
86
PORT_DIPNAME( 0x80, 0x80, "IN1:80" )
87
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
88
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
91
PORT_DIPNAME( 0x01, 0x01, "IN2:01" )
92
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
93
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
94
PORT_DIPNAME( 0x02, 0x02, "IN2:02" )
95
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
96
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
97
PORT_DIPNAME( 0x04, 0x04, "IN2:04" )
98
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
99
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
100
PORT_DIPNAME( 0x08, 0x08, "IN2:08" )
101
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
102
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
103
PORT_DIPNAME( 0x10, 0x10, "IN2:10" )
104
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
105
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
106
PORT_DIPNAME( 0x20, 0x20, "IN2:20" )
107
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
108
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
109
PORT_DIPNAME( 0x40, 0x40, "IN2:40" )
110
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
111
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
112
PORT_DIPNAME( 0x80, 0x80, "IN2:80" )
113
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
114
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
117
PORT_DIPNAME( 0x01, 0x01, "IN3:01" )
118
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
119
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
120
PORT_DIPNAME( 0x02, 0x02, "IN3:02" )
121
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
122
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
123
PORT_DIPNAME( 0x04, 0x04, "IN3:04" )
124
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
125
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
126
PORT_DIPNAME( 0x08, 0x08, "IN3:08" )
127
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
128
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
129
PORT_DIPNAME( 0x10, 0x10, "IN3:10" )
130
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
131
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
132
PORT_DIPNAME( 0x20, 0x20, "IN3:20" )
133
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
134
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
135
PORT_DIPNAME( 0x40, 0x40, "IN3:40" )
136
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
137
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
138
PORT_DIPNAME( 0x80, 0x80, "IN3:80" )
139
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
140
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
143
PORT_DIPNAME( 0x01, 0x01, "IN4:01" )
144
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
145
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
146
PORT_DIPNAME( 0x02, 0x02, "IN4:02" )
147
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
148
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
149
PORT_DIPNAME( 0x04, 0x04, "IN4:04" )
150
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
151
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
152
PORT_DIPNAME( 0x08, 0x08, "IN4:08" )
153
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
154
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
155
PORT_DIPNAME( 0x10, 0x10, "IN4:10" )
156
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
157
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
158
PORT_DIPNAME( 0x20, 0x20, "IN4:20" )
159
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
160
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
161
PORT_DIPNAME( 0x40, 0x40, "IN4:40" )
162
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
163
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
164
PORT_DIPNAME( 0x80, 0x80, "IN4:80" )
165
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
166
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
169
PORT_DIPNAME( 0x01, 0x01, "IN5:01" )
170
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
171
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
172
PORT_DIPNAME( 0x02, 0x02, "IN5:02" )
173
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
174
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
175
PORT_DIPNAME( 0x04, 0x04, "IN5:04" )
176
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
177
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
178
PORT_DIPNAME( 0x08, 0x08, "IN5:08" )
179
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
180
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
181
PORT_DIPNAME( 0x10, 0x10, "IN5:10" )
182
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
183
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
184
PORT_DIPNAME( 0x20, 0x20, "IN5:20" )
185
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
186
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
187
PORT_DIPNAME( 0x40, 0x40, "IN5:40" )
188
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
189
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
190
PORT_DIPNAME( 0x80, 0x80, "IN5:80" )
191
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
192
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
195
PORT_DIPNAME( 0x01, 0x01, "IN6:01" )
196
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
197
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
198
PORT_DIPNAME( 0x02, 0x02, "IN6:02" )
199
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
200
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
201
PORT_DIPNAME( 0x04, 0x04, "IN6:04" )
202
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
203
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
204
PORT_DIPNAME( 0x08, 0x08, "IN6:08" )
205
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
206
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
207
PORT_DIPNAME( 0x10, 0x10, "IN6:10" )
208
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
209
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
210
PORT_DIPNAME( 0x20, 0x20, "IN6:20" )
211
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
212
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
213
PORT_DIPNAME( 0x40, 0x40, "IN6:40" )
214
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
215
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
216
PORT_DIPNAME( 0x80, 0x80, "IN6:80" )
217
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
218
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
221
PORT_DIPNAME( 0x01, 0x01, "IN7:01" )
222
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
223
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
224
PORT_DIPNAME( 0x02, 0x02, "IN7:02" )
225
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
226
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
227
PORT_DIPNAME( 0x04, 0x04, "IN7:04" )
228
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
229
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
230
PORT_DIPNAME( 0x08, 0x08, "IN7:08" )
231
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
232
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
233
PORT_DIPNAME( 0x10, 0x10, "IN7:10" )
234
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
235
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
236
PORT_DIPNAME( 0x20, 0x20, "IN7:20" )
237
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
238
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
239
PORT_DIPNAME( 0x40, 0x40, "IN7:40" )
240
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
241
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
242
PORT_DIPNAME( 0x80, 0x80, "IN7:80" )
243
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
244
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
248
static MACHINE_CONFIG_START( ecoinf3_pyramid, ecoinf3_state )
249
/* basic machine hardware */
250
MCFG_CPU_ADD("maincpu", Z180,4000000) // certainly not a plain z80 at least, invalid opcodes for that
251
MCFG_CPU_PROGRAM_MAP(pyramid_memmap)
252
MCFG_CPU_IO_MAP(pyramid_portmap)
254
// sphinx and pyramid on this hw contain a weird rom, looks almost like half a pair for a 16-bit cpu, but contains
255
// what looks like vectors at the end, no idea what it is.
256
//MCFG_CPU_ADD("subcpu", HD6301, 4000000) // ??
257
//MCFG_CPU_PROGRAM_MAP(pyramid_submap)
263
/********************************************************************************************************************
264
ROMs for PYRAMID Hw Type
265
********************************************************************************************************************/
267
ROM_START( ec_pyram )
268
ROM_REGION( 0x200000, "maincpu", 0 )
270
ROM_LOAD( "pyramid 5p 3.bin", 0x0000, 0x010000, CRC(06a047d8) SHA1(4a1a15f1ab9defd3a0c5f2d333beae0daa16c6a4) )
272
ROM_REGION( 0x010000, "subcpu", 0 )
273
// this seems to be half of a 16-bit pair, possibly for a 68k. It might come from a different game, it's definitely missing the other part of the pair
274
// actually the end of the code (last 0x2000) bytes look like some 6xxx ROM, is the rest just unused space? the end part is same on Pyramid and Sphinx
275
ROM_LOAD( "pyramid.bin", 0x0000, 0x010000, CRC(370a6d2c) SHA1(ea4f899adeca734529b19ba8de0e371841982c20) )
279
ROM_START( ec_sphin )
280
ROM_REGION( 0x200000, "maincpu", 0 )
281
// z80 ROMS but truncated, seem to just contain garbage at the end tho, so probably OK
282
ROM_LOAD( "sphinx8c.bin", 0x0000, 0x00e000, CRC(f8e110fc) SHA1(4f55b5de87151f9127b84ffcf7f6f2e3ce34469f) )
284
ROM_REGION( 0x200000, "altrevs", 0 )
285
ROM_LOAD( "spx10cv2.bin", 0x0000, 0x00e000, CRC(e2bf11a0) SHA1(f267385dbb06b2be8bcad7ae5e5804f5bb467f6d) )
287
ROM_REGION( 0x010000, "subcpu", 0 )
288
// like Pyramid this looks more like half a 16-bit pair (68k?) ROM...
289
// actually the end of the code (last 0x2000) bytes look like some 6xxx ROM, is the rest just unused space? the end part is same on Pyramid and Sphinx
290
ROM_LOAD( "spnx5p", 0x0000, 0x010000, CRC(b4b49259) SHA1(a26172b659b739564b25dcc0f3f31f131a144d52) )
293
ROM_START( ec_penni )
294
ROM_REGION( 0x200000, "maincpu", 0 )
295
// Z80 code, contains scandisk / windows garbage at the end
296
ROM_LOAD( "pfh_8c.bin", 0x0000, 0x010000, CRC(282a42d8) SHA1(f985d238c72577e755090ce0f04dcc7850af6f3b) )
298
ROM_REGION( 0x200000, "altrevs", 0 )
299
ROM_LOAD( "pfh_v6.bin", 0x0000, 0x00e000, CRC(febb3fce) SHA1(f8df085a563405ea5adcd15a4162a7ba56bcfad7) ) // this set is truncated, but that area just seems to be garbage anyway, so should be fine
301
ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
302
// no strange rom in this set
306
ROM_START( ec_laby ) // no header info with these
307
ROM_REGION( 0x200000, "maincpu", 0 )
309
ROM_LOAD( "lab1v8.bin", 0x0000, 0x008000, CRC(16f0eeac) SHA1(9e28a6ae9176f730234dd8a7a8e50bad2904b611) )
310
ROM_LOAD( "lab2v8.bin", 0x8000, 0x008000, CRC(14d7c58b) SHA1(e6b19523d96c9c1f39b743f8c52791465ab79637) )
312
ROM_REGION( 0x200000, "altrevs", 0 )
313
/* another, larger rom size */
314
ROM_LOAD( "laby10", 0x0000, 0x010000, CRC(a8b58fc3) SHA1(16e940b04fa85ff85a29197b4e45c8a39f5cad19) )
316
ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
317
// no strange rom in this set
320
ROM_START( ec_secrt )
321
ROM_REGION( 0x200000, "maincpu", 0 )
322
ROM_LOAD( "scastle1.bin", 0x0000, 0x010000, CRC(e6abb596) SHA1(35518c46f1ddf1d3a85af13e4ba8bee07e804f64) )
324
ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
325
// no strange rom in this set
328
DRIVER_INIT( ecoinf3 )
334
// another hw type (similar to stuff in ecoinf2.c) (watchdog on port 58?)
335
GAME( 19??, ec_pyram, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3, ROT0, "Electrocoin", "Pyramid (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
336
GAME( 19??, ec_sphin, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3, ROT0, "Electrocoin", "Sphinx (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
337
GAME( 19??, ec_penni, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
338
GAME( 19??, ec_laby, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3, ROT0, "Electrocoin", "Labyrinth (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
339
GAME( 19??, ec_secrt, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3, ROT0, "Electrocoin", "Secret Castle (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)