~ubuntu-branches/ubuntu/lucid/sdlmame/lucid

« back to all changes in this revision

Viewing changes to src/mame/drivers/amaticmg.c

  • Committer: Bazaar Package Importer
  • Author(s): Cesare Falco
  • Date: 2009-11-03 17:10:15 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20091103171015-6hop4ory5lxnumpn
Tags: 0.135-0ubuntu1
* New upstream release - Closes (LP: #403212)
* debian/watch: unstable releases are no longer detected
* mame.ini: added the cheat subdirectories to cheatpath so zipped
  cheatfiles will be searched too
* renamed crsshair subdirectory to crosshair to reflect upstream change
* mame.ini: renamed references to crosshair subdirectory (see above)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**********************************************************************************
 
2
 
 
3
 
 
4
  AMATIC - MULTI GAME SYSTEM
 
5
  --------------------------
 
6
 
 
7
  Preliminary driver by Roberto Fresca.
 
8
 
 
9
 
 
10
  Encrypted gambling hardware based on a custom CPU.
 
11
 
 
12
 
 
13
***********************************************************************************
 
14
 
 
15
 
 
16
  Hardware Notes
 
17
  --------------
 
18
 
 
19
  ------------------------------------------------
 
20
    Board #1 (unknown slots game)
 
21
  ------------------------------------------------
 
22
 
 
23
  1x 40-pin custom CPU labeled:
 
24
 
 
25
     0288
 
26
     8012 (last digit is hard to read)
 
27
     11.12.96
 
28
 
 
29
  1x Unknown 40-pins IC (maybe 6845).
 
30
  1x Altera EPM5130LC (84-pins).
 
31
  1x KS82C55A (2x PPI).
 
32
  1x Unknown 40-pins IC (maybe another PPI).
 
33
 
 
34
  1x Dallas DS1236-10 (micro manager).
 
35
  1x Push button.
 
36
 
 
37
  1x Unknown 24-pin IC labeled SM64.
 
38
  1x Unknown 8-pin IC labeled SM65 (looks like a DAC).
 
39
  1x Unknown 8-pin IC no labeled (looks like a DAC).
 
40
  1x MC14538BCL (Dual precision monostable multivibrator).
 
41
  1x TDA2003 Audio Amp.
 
42
  1x Pot.
 
43
 
 
44
  1x HY6264ALP-10 (RAM).
 
45
  1x HY62256ALP-10 (RAM).
 
46
 
 
47
  1x 1mb ROM, near CPU.
 
48
  2x 27C512 ROMs.
 
49
  1x N82S147AN bipolar PROM.
 
50
 
 
51
  1x Xtal 16 MHz.
 
52
  1x DIP switches bank (x8).
 
53
  1x Battery.
 
54
 
 
55
  1x 2x17 male connector (like IDE ones).
 
56
  1x 2x8 contacts edge connector.
 
57
  1x 2x22 contacts edge connector.
 
58
 
 
59
 
 
60
  ------------------------------------------------
 
61
     Multi-Game I v2.4
 
62
  ------------------------------------------------
 
63
 
 
64
  1x 40-pin custom CPU labeled:
 
65
 
 
66
     Amatic Trading GMBH
 
67
     Lfnd. Nr. 1000
 
68
     Type:     801 I
 
69
     Datum:    12.02.96
 
70
 
 
71
  1x GoldStar 6845S.
 
72
  1x Altera EPM5130LC (84-pins).
 
73
  3x PPI 8255AC-2.
 
74
 
 
75
  1x Dallas DS1236-10 (micro manager).
 
76
  1x Push button.
 
77
 
 
78
  1x Unknown 24-pin IC labeled K-666 9330.
 
79
  1x Unknown 8-pin IC labeled K-664 9432 (looks like a DAC).
 
80
  1x LM358P (8-pin).
 
81
  1x MC14538BCL (Dual precision monostable multivibrator).
 
82
  1x TDA2003 Audio Amp.
 
83
  1x Pot.
 
84
 
 
85
  1x KM6264BL-7 (RAM).
 
86
  1x HY62256A-10 (RAM).
 
87
 
 
88
  1x 27C2001 ROM labeled MGI V GER 3.9/I/8201.
 
89
  1x 27C4000 ROM labeled Multi 2.4 ZG1.
 
90
  1x 27C4001 ROM labeled Multi 2.4 ZG2.
 
91
  1x 27C4001 ROM labeled Multi 2.4 ZG3.
 
92
  2x N82S147AN bipolar PROMs.
 
93
 
 
94
  1x Xtal 16 MHz.
 
95
  1x DIP switches bank (x8).
 
96
  1x Battery.
 
97
 
 
98
  1x 2x17 male connector (like IDE ones).
 
99
  1x 2x36 contacts edge connector.
 
100
 
 
101
 
 
102
  PCB Layout:
 
103
              ________________________________________________________________________
 
104
             | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |
 
105
   __________| |  |  |  |  |  |  |  |  |36x2 edge connector |  |  |  |  |  |  |  |  | |__________
 
106
  |    ____ ____                                                                                 |
 
107
  |   |  :::::  |                                                                                |
 
108
  |   |_________|                DIP1                                                            |
 
109
  | __________   __________   __________                                             __________  |
 
110
  ||ULN 2803A | |ULN 2803A | | 12345678 |                                           |ULN 2803A | |
 
111
  ||__________| |__________| |__________|                                           |__________| |
 
112
  |                                                                                              |
 
113
  |    __________________________    __________________________    __________________________    |
 
114
  |   |        NEC JAPAN         |  |        NEC JAPAN         |  |        NEC JAPAN         |   |
 
115
  |   |        D8255AC_2         |  |        D8255AC_2         |  |        D8255AC_2         |   |
 
116
  |   |        9150xD006         |  |        9150xD006         |  |        9150xD006         |   |
 
117
  |   |                          |  |                          |  |                          |   |
 
118
  |   |__________________________|  |__________________________|  |__________________________|   |
 
119
  |                                                                                              |
 
120
  |   _________________________                                                                  |
 
121
  |  |AMATIC TRADING GMBH      |                  __________    _______________                  |
 
122
  |  |Lfnd. Nr. 1000           |                 |   XTAL   |  |     K_666     |                 |
 
123
  |  |Type: 80 / I             |                 |  16 Mhz  |  |     9330      |                 |
 
124
  |  |Datum: 12.02.96          |                 |__________|  |               |                 |
 
125
  |  |_________________________|                               |_______________|                 |
 
126
  |                                                                                              |
 
127
  |  ? ____      ___________________       __________________    __                              |
 
128
  |   /    \    |MGI V GER          |     |                  |  |H |                             |
 
129
  |  | Batt |   |3.9 / I / 8201     |     |      ALTERA      |  |  |                             |
 
130
  |  | ery  |   |M27C2001           |     |                  |  |__|                             |
 
131
  |   \____/    |___________________|     |    EPM5130LC     |                                   |
 
132
  |                                       |      I9542       |                                   |
 
133
  |      __        _________________      |                  |   __                 ______       |
 
134
  |     |  |      |HY62256A         |     |                  |  |G |               /______\      |
 
135
  |     |  |      |LP_10            |     |                  |  |  |              |DALLAS  |     |
 
136
  |     |A |      |9506C  Korea     |     |                  |  |__|              |DS1994_F|     |
 
137
  |     |  |      |_________________|     |                  |                    |_______5|     |
 
138
  |     |  |                              |__________________|                     \______/      |
 
139
  |     |__|                                                                                     |
 
140
  |       _______________________            __    __    __    __    __    __                    |
 
141
  |      |   :::::::::::::::::   |          |  |  |  |  |  |  |  |  |  |  |  |                   |
 
142
  |      |___________ ___________|          |  |  |  |  |  |  |  |  |  |  |  |    ____________   |
 
143
  |                                         |C |  |B |  |B |  |B |  |B |  |B |   | GD74HCT273 |  |
 
144
  |          __________    _______          |  |  |  |  |  |  |  |  |  |  |  |   |____________|  |
 
145
  |         |MC14538BCP|  |       |         |  |  |  |  |  |  |  |  |  |  |  |    ____________   |
 
146
  |         |__________|  |SEC    |   __    |__|  |__|  |__|  |__|  |__|  |__|   | N82S147AN  |  |
 
147
  |                       |  KOREA|  |  |                                        |____________|  |
 
148
  |                       |       |  |  |     _______    _______    _______                      |
 
149
  |   __   __   __   __   |   506Y|  |E |    |       |  |       |  |       |                     |
 
150
  |  |  | |  | |  | |  |  |       |  |  |    |MULTI  |  |MULTI  |  |MULTI  |                     |
 
151
  |  |D | |D | |D | |D |  |KM6264B|  |  |    |    2.4|  |    2.4|  |    2.4|                     |
 
152
  |  |  | |  | |  | |  |  |L_7    |  |__|    |       |  |       |  |       |      ____________   |
 
153
  |  |  | |  | |  | |  |  |       |          |  ZG1  |  |  ZG2  |  |  ZG3  |     | GD74HCT273 |  |
 
154
  |  |__| |__| |__| |__|  |_______|          |       |  |       |  |       |     |____________|  |
 
155
  |                                          |       |  |       |  |       |      ____________   |
 
156
  |  ________________________    __   __     |27C4000|  |27C4001|  |27C4001|     | N82S147AN  |  |
 
157
  | |        GOLDSTAR        |  |  | |  |    |       |  |       |  |       |     |____________|  |
 
158
  | |        GM68B45S        |  |  | |  |    |       |  |       |  |       |      _________      |
 
159
  | |        9512            |  |F | |E |    |_______|  |_______|  |_______|     |GD74HC174|     |
 
160
  | |                        |  |  | |  |                                        |_________|     |
 
161
  | |________________________|  |  | |  |                                      _________         |
 
162
  |                             |  | |  |                                     |GD74HC174|        |
 
163
  |                             |__| |__|        AMATIC AMA_8000_2            |_________|        |
 
164
  |______________________________________________________________________________________________|
 
165
 
 
166
  A = Dallas / DS1236_10 / 9443A5
 
167
  B = MALAYSIA 114CS / SN74LS194AN
 
168
  C = MALAYSIA 544CS / SN74LS194AN
 
169
  D = GS 9447 / GD74LS157
 
170
  E = 53A9TKK / SN74HC374N
 
171
  F = GS 9504 / GD74HC244
 
172
  G = LM358P
 
173
  H = K_664 / 9432
 
174
 
 
175
 
 
176
  DIP1:
 
177
   ___________________
 
178
  | ON                |
 
179
  |  _______________  |
 
180
  | |_|_|_|_|_|_|_|_| |
 
181
  | |#|#|#|#|#|#|#|#| |
 
182
  | |_______________| |
 
183
  |  1 2 3 4 5 6 7 8  |
 
184
  |___________________|
 
185
 
 
186
 
 
187
  ------------------------------------------------
 
188
     Multi-Game III v3.5
 
189
  ------------------------------------------------
 
190
 
 
191
  1x 40-pin custom CPU labeled:
 
192
 
 
193
     Amatic
 
194
     Lfnd. Nr. 99/5070 467
 
195
     Type:     80(1?) I
 
196
     Datum:    10.01.00
 
197
 
 
198
  1x F68B45P.
 
199
  1x Altera EPM5130LC (84-pins).
 
200
  3x PPI NEC D71055C.
 
201
 
 
202
  1x Dallas DS1236-5 (micro manager).
 
203
  1x Push button.
 
204
 
 
205
  1x Yamaha YM3812.
 
206
  1x Yamaha Y3014B (DAC).
 
207
  1x LM358M (8-pin).
 
208
  1x MC14538 (Dual precision monostable multivibrator).
 
209
  1x TDA2003 (Audio Amp, Heatsinked).
 
210
  1x Pot.
 
211
 
 
212
  1x HY6264A (RAM).
 
213
  1x KM62256 (RAM).
 
214
 
 
215
  1x 27C2000 ROM labeled 'MG III VGer 3.5/I/8205'.
 
216
  1x 27C4000 ROM labeled 'MG III 51 ZG1'.
 
217
  1x 27C040 ROM labeled 'MG III 51 ZG2'.
 
218
  1x 27C040 ROM labeled 'MG III 51 ZG3'.
 
219
  1x 27C1024 labeled 'V'
 
220
 
 
221
  1x Xtal 16 MHz.
 
222
  1x DIP switches bank (x8).
 
223
  1x Battery.
 
224
 
 
225
  2x 2x17 male connector (like IDE ones).
 
226
  1x 2x36 contacts edge connector.
 
227
 
 
228
 
 
229
***********************************************************************************
 
230
 
 
231
 
 
232
    Memory Map
 
233
    ----------
 
234
 
 
235
    $00000 - $FFFFF   Still unknown...
 
236
 
 
237
 
 
238
***********************************************************************************
 
239
 
 
240
  +------------------------------------------------------------------------------+
 
241
  |             AMATIC Standard Edge Connector (Videomat, Multigame)             |
 
242
  +----------------------------------------+-------------------------------------+
 
243
  |            Component Side              |              Solder Side            |
 
244
  +-------------------+---------------+----+----+---------------+----------------+
 
245
  |     Function      |   Direction   | Nr | Nr |   Direction   |    Function    |
 
246
  +-------------------+---------------+----+----+---------------+----------------+
 
247
  | Lamp-HOLD3        |    OUTPUT     | 36 | r  |    ------     | N/C            |
 
248
  | REMOTE-PL         |    OUTPUT     | 35 | p  |    OUTPUT     | COIN-INVERTER  |
 
249
  | REMOTE-CLOCK      |    OUTPUT     | 34 | n  |    OUTPUT     | D-OUT          |
 
250
  | D-IN              |    INPUT      | 33 | m  |    SUPPLY     | +5V            |
 
251
  | REMOTE-SELECT     |    INPUT      | 32 | l  |    INPUT      | ???            |
 
252
  | N/C               |    ------     | 31 | k  |    INPUT      | ???            |
 
253
  | Coin-INPUT4       |    INPUT      | 30 | j  |    INPUT      | ???            |
 
254
  | GND               |    SUPPLY     | 29 | h  |    SUPPLY     | GND            |
 
255
  | HOPPER-RELAIS     |    OUTPUT     | 28 | f  |    INPUT      | ANTENNE        |
 
256
  | N/C               |    ------     | 27 | e  |    ------     | N/C            |
 
257
  | TICKET-OUT        |    OUTPUT     | 26 | d  |    ------     | N/C            |
 
258
  | N/C               |    ------     | 25 | c  |    ------     | N/C            |
 
259
  | KEY-DATA          |   TTLINPUT    | 24 | b  |   TTLINPUT    | KEY-DATA       |
 
260
  | N/C               |    ------     | 23 | a  |    INPUT      | KEY-CONTACT    |
 
261
  | GND               |    SUPPLY     | 22 | Z  |    SUPPLY     | GND            |
 
262
  | GND               |    SUPPLY     | 21 | Y  |    SUPPLY     | GND            |
 
263
  | GND               |    SUPPLY     | 20 | X  |    SUPPLY     | GND            |
 
264
  | +5V               |    SUPPLY     | 19 | W  |    SUPPLY     | +5V            |
 
265
  | +12V              |    SUPPLY     | 18 | V  |    SUPPLY     | +12V           |
 
266
  | Lamp-HOLD1        |    OUTPUT     | 17 | U  |    OUTPUT     | Lamp-START     |
 
267
  | Lamp-HOLD2        |    OUTPUT     | 16 | T  |    OUTPUT     | Lamp-HOLD5     |
 
268
  | Lamp-CANCEL       |    OUTPUT     | 15 | S  |    OUTPUT     | Lamp-HOLD4     |
 
269
  | Coin-INPUT1       |    INPUT      | 14 | R  |    OUTPUT     | HOPPER-OUT     |
 
270
  | Mech. Counter-IN  |    OUTPUT     | 13 | P  |    INPUT      | REMOTE         |
 
271
  | Mech. Counter-OUT |    OUTPUT     | 12 | N  |    INPUT      | Button-HOLD1   |
 
272
  | Mech. Counter-EXT |    OUTPUT     | 11 | M  |    INPUT      | Button-CANCEL  |
 
273
  | Button-HOLD5      |    INPUT      | 10 | L  |    INPUT      | Button-START   |
 
274
  | Bookkeeping 2     |    INPUT      | 09 | K  |    INPUT      | Bookkeeping 1  |
 
275
  | Button-HOLD2      |    INPUT      | 08 | J  |    INPUT      | Button-HOLD4   |
 
276
  | Button-HOPPER-OUT |    INPUT      | 07 | H  |    INPUT      | Button-HOLD3   |
 
277
  | HOPPER-COUNT      |    INPUT      | 06 | F  |    ------     | N/C            |
 
278
  | Coin-INPUT3       |    INPUT      | 05 | E  |    INPUT      | Coin-INPUT2    |
 
279
  | Monitor-GREEN     | TTLOUT-Analog | 04 | D  | TTLOUT-Analog | Monitor-RED    |
 
280
  | Monitor-SYNC      | TTLOUT-Analog | 03 | C  | TTLOUT-Analog | Monitor-BLUE   |
 
281
  | SPEAKER           |  OUT-Analog   | 02 | B  |    SUPPLY     | Monitor-GND    |
 
282
  | CREDIT-CLEAR      |    INPUT      | 01 | A  |    SUPPLY     | SPEAKER-GND    |
 
283
  +-------------------+---------------+----+----+---------------+----------------+
 
284
 
 
285
***********************************************************************************
 
286
 
 
287
 
 
288
  Findings about the encryption scheme
 
289
  ------------------------------------
 
290
 
 
291
  The program ROM is encrypted, but... The programmers left the cow out...
 
292
  They left some blank spaces that allow see some encryption patterns.
 
293
 
 
294
 
 
295
  Example:
 
296
 
 
297
 
 
298
  1) A string of 4 consecutive values with relation between them, is repeated once.
 
299
     Then the whole string is repeated again, but with bit 3 XOR'ed.
 
300
 
 
301
         +------------ value1
 
302
         |  +--------- value2 = value1 ^ 0x88
 
303
         |  |  +------ value3 = value1 ^ 0x22
 
304
         |  |  |  +--- value4 = value1 ^ 0x22 ^ 0x88
 
305
         |  |  |  |
 
306
         |  |  |  |
 
307
 
 
308
  $E000: AF 27 8D 05   AF 27 8D 05   A7 2F 85 0D  A7 2F 85 0D
 
309
        +-----------+ +-----------+ |                        |
 
310
           string1       string1    |                        |
 
311
        +-------------------------+ +------------------------+
 
312
                  string2                string2 ^ 0x08
 
313
        +----------------------------------------------------+
 
314
                                string3
 
315
 
 
316
 
 
317
  3) Then, all the E000-E00F range repeats in E010-E01F, but with bit 2 XOR'ed.
 
318
 
 
319
  $E010: AB 23 89 01 AB 23 89 01 A3 2B 81 09 A3 2B 81 09
 
320
        +-----------------------------------------------+
 
321
                        string3 ^ 0x04
 
322
 
 
323
 
 
324
  4) Then repeat all the E000-E01F range...
 
325
 
 
326
  $E000: AF 27 8D 05 AF 27 8D 05 A7 2F 85 0D A7 2F 85 0D
 
327
  $E010: AB 23 89 01 AB 23 89 01 A3 2B 81 09 A3 2B 81 09
 
328
 
 
329
  $E020: AF 27 8D 05 AF 27 8D 05 A7 2F 85 0D A7 2F 85 0D
 
330
  $E030: AB 23 89 01 AB 23 89 01 A3 2B 81 09 A3 2B 81 09
 
331
 
 
332
 
 
333
  5) Then the original value changes (0xAF -> 0x63), using the same algorithm
 
334
     (steps 1-4) for the next 0x40 bytes...
 
335
 
 
336
  $E040: 63 EB 41 C9 63 EB 41 C9 6B E3 49 C1 6B E3 49 C1
 
337
  $E050: 67 EF 45 CD 67 EF 45 CD 6F E7 4D C5 6F E7 4D C5
 
338
  $E060: 63 EB 41 C9 63 EB 41 C9 6B E3 49 C1 6B E3 49 C1
 
339
  $E070: 67 EF 45 CD 67 EF 45 CD 6F E7 4D C5 6F E7 4D C5
 
340
 
 
341
  Repeat step (5) ...till $E0FF.
 
342
 
 
343
 
 
344
  The encryption pattern repeats for the next 0x100 bytes, so the E000-E0FF range is repeated
 
345
  in E100-E1FF. Then the original values changes again, creating another block of 0x200 bytes.
 
346
 
 
347
  And so on....
 
348
 
 
349
 
 
350
***********************************************************************************
 
351
 
 
352
 
 
353
  [2009/09/11]
 
354
 
 
355
  - Initial release.
 
356
  - Added hardware specs from PCB pictures. Figured out some components.
 
357
  - Added findings about the encryption scheme.
 
358
  - Decoded 2 graphics bitplanes.
 
359
  - Added pre-defined clocks.
 
360
  - Added technical notes.
 
361
 
 
362
 
 
363
  *** TO DO ***
 
364
 
 
365
  - Decrypt the program ROMs.
 
366
  - Identify the CPU type.
 
367
  - Memory map.
 
368
  - Hook the remaining GFX bitplanes.
 
369
  - CRTC
 
370
  - Proper inputs.
 
371
  - Color decode routines.
 
372
  - Sound support.
 
373
 
 
374
 
 
375
***********************************************************************************/
 
376
 
 
377
 
 
378
#define MASTER_CLOCK    XTAL_16MHz
 
379
#define CPU_CLOCK               MASTER_CLOCK/4  /* guess */
 
380
#define SND_CLOCK               MASTER_CLOCK/4  /* guess */
 
381
#define CRTC_CLOCK              MASTER_CLOCK/8  /* guess */
 
382
 
 
383
 
 
384
#include "driver.h"
 
385
#include "cpu/z80/z80.h"
 
386
#include "video/mc6845.h"
 
387
#include "machine/8255ppi.h"
 
388
#include "sound/3812intf.h"
 
389
#include "sound/dac.h"
 
390
 
 
391
 
 
392
/************************************
 
393
*          Video Hardware           *
 
394
************************************/
 
395
 
 
396
static VIDEO_START( amaticmg )
 
397
{
 
398
}
 
399
 
 
400
static VIDEO_UPDATE( amaticmg )
 
401
{
 
402
        return 0;
 
403
}
 
404
 
 
405
static PALETTE_INIT( amaticmg )
 
406
{
 
407
}
 
408
 
 
409
 
 
410
/************************************
 
411
*       Read/Write Handlers         *
 
412
************************************/
 
413
 
 
414
 
 
415
 
 
416
/************************************
 
417
*      Memory Map Information       *
 
418
************************************/
 
419
 
 
420
static ADDRESS_MAP_START( amaticmg_map, ADDRESS_SPACE_PROGRAM, 8 )
 
421
        AM_RANGE(0x00000, 0x3ffff) AM_ROM
 
422
//  AM_RANGE(0x0000, 0x0000) AM_RAM // AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
 
423
//  AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("crtc", mc6845_address_w)
 
424
//  AM_RANGE(0x0000, 0x0000) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
 
425
//  AM_RANGE(0x0000, 0x0000) AM_RAM_WRITE(amaticmg_videoram_w) AM_BASE(&videoram)
 
426
//  AM_RANGE(0x0000, 0x0000) AM_RAM_WRITE(amaticmg_colorram_w) AM_BASE(&colorram)
 
427
ADDRESS_MAP_END
 
428
 
 
429
static ADDRESS_MAP_START( amaticmg_portmap, ADDRESS_SPACE_IO, 8 )
 
430
        ADDRESS_MAP_GLOBAL_MASK(0xff)
 
431
//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
 
432
//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
 
433
//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w)
 
434
//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("ym", ym3812_w)
 
435
//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_signed_w)
 
436
//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac2", dac_signed_w)
 
437
 
 
438
ADDRESS_MAP_END
 
439
 
 
440
/*
 
441
    Unknown R/W
 
442
    -----------
 
443
 
 
444
 
 
445
*/
 
446
 
 
447
 
 
448
/************************************
 
449
*           Input ports             *
 
450
************************************/
 
451
 
 
452
static INPUT_PORTS_START( amaticmg )
 
453
        PORT_START("IN0")
 
454
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-1") PORT_CODE(KEYCODE_1)
 
455
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2)
 
456
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-3") PORT_CODE(KEYCODE_3)
 
457
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-4") PORT_CODE(KEYCODE_4)
 
458
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-5") PORT_CODE(KEYCODE_5)
 
459
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-6") PORT_CODE(KEYCODE_6)
 
460
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-7") PORT_CODE(KEYCODE_7)
 
461
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-8") PORT_CODE(KEYCODE_8)
 
462
 
 
463
        PORT_START("IN1")
 
464
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-1") PORT_CODE(KEYCODE_Q)
 
465
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-2") PORT_CODE(KEYCODE_W)
 
466
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-3") PORT_CODE(KEYCODE_E)
 
467
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-4") PORT_CODE(KEYCODE_R)
 
468
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-5") PORT_CODE(KEYCODE_T)
 
469
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-6") PORT_CODE(KEYCODE_Y)
 
470
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-7") PORT_CODE(KEYCODE_U)
 
471
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-8") PORT_CODE(KEYCODE_I)
 
472
 
 
473
        PORT_START("IN2")
 
474
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-1") PORT_CODE(KEYCODE_A)
 
475
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-2") PORT_CODE(KEYCODE_S)
 
476
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-3") PORT_CODE(KEYCODE_D)
 
477
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-4") PORT_CODE(KEYCODE_F)
 
478
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-5") PORT_CODE(KEYCODE_G)
 
479
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-6") PORT_CODE(KEYCODE_H)
 
480
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_J)
 
481
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_K)
 
482
 
 
483
        PORT_START("IN3")
 
484
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-1") PORT_CODE(KEYCODE_Z)
 
485
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-2") PORT_CODE(KEYCODE_X)
 
486
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-3") PORT_CODE(KEYCODE_C)
 
487
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-4") PORT_CODE(KEYCODE_V)
 
488
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-5") PORT_CODE(KEYCODE_B)
 
489
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-6") PORT_CODE(KEYCODE_N)
 
490
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-7") PORT_CODE(KEYCODE_M)
 
491
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-8") PORT_CODE(KEYCODE_L)
 
492
 
 
493
        PORT_START("SW1")
 
494
        PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
 
495
        PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
 
496
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
497
        PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
 
498
        PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
 
499
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
500
        PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
 
501
        PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
 
502
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
503
        PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
 
504
        PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
 
505
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
506
        PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
 
507
        PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
 
508
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
509
        PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
 
510
        PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
 
511
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
512
        PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
 
513
        PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
 
514
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
515
        PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
 
516
        PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
 
517
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 
518
INPUT_PORTS_END
 
519
 
 
520
 
 
521
/************************************
 
522
*         Graphics Layouts          *
 
523
************************************/
 
524
 
 
525
static const gfx_layout charlayout =
 
526
{
 
527
/* Only 2 planes are hooked. This need to be fixed */
 
528
 
 
529
        4,8,
 
530
        RGN_FRAC(1,2),
 
531
        2,
 
532
        { RGN_FRAC(0,2), RGN_FRAC(0,2) + 4 },
 
533
        { 3, 2, 1, 0 }, /* tiles are x-flipped */
 
534
        { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
 
535
        8*4*2
 
536
};
 
537
 
 
538
 
 
539
/************************************
 
540
*    Graphics Decode Information    *
 
541
************************************/
 
542
 
 
543
static GFXDECODE_START( amaticmg )
 
544
        GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 16 )
 
545
GFXDECODE_END
 
546
 
 
547
 
 
548
/************************************
 
549
*          Sound Interface          *
 
550
************************************/
 
551
 
 
552
//static const ym3812_interface ym3812_config =
 
553
//{
 
554
//  sound_irq
 
555
//};
 
556
 
 
557
 
 
558
/************************************
 
559
*          CRTC Interface           *
 
560
************************************/
 
561
 
 
562
//static const mc6845_interface mc6845_intf =
 
563
//{
 
564
//  "screen",   /* screen we are acting on */
 
565
//  8,          /* number of pixels per video memory address */
 
566
//  NULL,       /* before pixel update callback */
 
567
//  NULL,       /* row update callback */
 
568
//  NULL,       /* after pixel update callback */
 
569
//  DEVCB_NULL, /* callback for display state changes */
 
570
//  DEVCB_NULL, /* callback for cursor state changes */
 
571
//  DEVCB_NULL, /* HSYNC callback */
 
572
//  DEVCB_NULL, /* VSYNC callback */
 
573
//  NULL        /* update address callback */
 
574
//};
 
575
 
 
576
 
 
577
/************************************
 
578
*      PPI 8255 (x3) Interface      *
 
579
************************************/
 
580
 
 
581
//static const ppi8255_interface ppi8255_intf[3] =
 
582
//{
 
583
//  {   /* (00-00) Mode X - Port X set as input */
 
584
//      DEVCB_NULL,                     /* Port A read */
 
585
//      DEVCB_NULL,                     /* Port B read */
 
586
//      DEVCB_NULL,                     /* Port C read */
 
587
//      DEVCB_NULL,                     /* Port A write */
 
588
//      DEVCB_NULL,                     /* Port B write */
 
589
//      DEVCB_NULL,                     /* Port C write */
 
590
//  },
 
591
//  {   /* (00-00) Mode X - Port X set as input */
 
592
//      DEVCB_NULL,                     /* Port A read */
 
593
//      DEVCB_NULL,                     /* Port B read */
 
594
//      DEVCB_NULL,                     /* Port C read */
 
595
//      DEVCB_NULL,                     /* Port A write */
 
596
//      DEVCB_NULL,                     /* Port B write */
 
597
//      DEVCB_NULL,                     /* Port C write */
 
598
//  },
 
599
//  {   /* (00-00) Mode X - Port X set as input */
 
600
//      DEVCB_NULL,                     /* Port A read */
 
601
//      DEVCB_NULL,                     /* Port B read */
 
602
//      DEVCB_NULL,                     /* Port C read */
 
603
//      DEVCB_NULL,                     /* Port A write */
 
604
//      DEVCB_NULL,                     /* Port B write */
 
605
//      DEVCB_NULL,                     /* Port C write */
 
606
//  }
 
607
//};
 
608
 
 
609
/************************************
 
610
*          Machine Drivers          *
 
611
************************************/
 
612
 
 
613
static MACHINE_DRIVER_START( amaticmg )
 
614
        /* basic machine hardware */
 
615
        MDRV_CPU_ADD("maincpu", Z80, CPU_CLOCK)         /* WRONG! */
 
616
        MDRV_CPU_PROGRAM_MAP(amaticmg_map)
 
617
        MDRV_CPU_IO_MAP(amaticmg_portmap)
 
618
        MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
 
619
 
 
620
//  MDRV_NVRAM_HANDLER(generic_0fill)
 
621
 
 
622
        /* 3x 8255 */
 
623
//  MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
 
624
//  MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
 
625
//  MDRV_PPI8255_ADD( "ppi8255_2", ppi8255_intf[2] )
 
626
 
 
627
        /* video hardware */
 
628
        MDRV_SCREEN_ADD("screen", RASTER)
 
629
        MDRV_SCREEN_REFRESH_RATE(60)
 
630
        MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
 
631
        MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
 
632
        MDRV_SCREEN_SIZE(512, 256)
 
633
        MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
 
634
 
 
635
//  MDRV_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
 
636
 
 
637
        MDRV_GFXDECODE(amaticmg)
 
638
 
 
639
        MDRV_PALETTE_INIT(amaticmg)
 
640
        MDRV_PALETTE_LENGTH(0x100)
 
641
        MDRV_VIDEO_START(amaticmg)
 
642
        MDRV_VIDEO_UPDATE(amaticmg)
 
643
 
 
644
        /* sound hardware */
 
645
//  MDRV_SPEAKER_STANDARD_MONO("mono")
 
646
 
 
647
//  MDRV_SOUND_ADD("ym", YM3812, SND_CLOCK)
 
648
//  MDRV_SOUND_CONFIG(ym3812_config)
 
649
//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
 
650
 
 
651
//  MDRV_SOUND_ADD("dac", DAC, 0)   /* Y3014B */
 
652
//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
 
653
 
 
654
MACHINE_DRIVER_END
 
655
 
 
656
 
 
657
/************************************
 
658
*             Rom Load              *
 
659
************************************/
 
660
 
 
661
ROM_START( am_uslot )
 
662
        ROM_REGION( 0x40000, "maincpu", 0 )     /* encrypted program ROM...*/
 
663
        ROM_LOAD( "u3.bin",  0x00000, 0x20000, CRC(29bf4a95) SHA1(a73873f7cd1fdf5accc3e79f4619949f261400b8) )
 
664
 
 
665
        ROM_REGION( 0x20000, "gfx1", 0 )        /* There are only slots tiles. No chars inside */
 
666
        ROM_LOAD( "u9.bin",  0x00000, 0x10000, CRC(823a736a) SHA1(a5227e3080367736aac1198d9dbb55efc4114624) )
 
667
        ROM_LOAD( "u10.bin", 0x00000, 0x10000, CRC(6a811c81) SHA1(af01cd9b1ce6aca92df71febb05fe216b18cf42a) )
 
668
 
 
669
        ROM_REGION( 0x0200, "proms", 0 )
 
670
        ROM_LOAD( "n82s147a.bin", 0x0000, 0x0200, CRC(dfeabd11) SHA1(21e8bbcf4aba5e4d672e5585890baf8c5bc77c98) )
 
671
ROM_END
 
672
 
 
673
 
 
674
ROM_START( am_mg24 )
 
675
        ROM_REGION( 0x40000, "maincpu", 0 )     /* encrypted program ROM...*/
 
676
        ROM_LOAD( "mgi_vger_3.9-i-8201.i6.bin", 0x00000, 0x40000, CRC(9ce159f7) SHA1(101c277d579a69cb03f879288b2cecf838cf1741) )
 
677
 
 
678
        ROM_REGION( 0x180000, "gfx1", 0 )
 
679
        ROM_LOAD( "multi_2.4_zg1.i17.bin", 0x000000, 0x80000, CRC(4a60a718) SHA1(626991abee768da58e87c7cdfc4fcbae86c6ea2a) )
 
680
        ROM_LOAD( "multi_2.4_zg2.i18.bin", 0x080000, 0x80000, CRC(b504e1b8) SHA1(ffa17a2c212eb2fffb89b131868e69430cb41203) )
 
681
        ROM_LOAD( "multi_2.4_zg3.i33.bin", 0x100000, 0x80000, CRC(9b66bb4d) SHA1(64035d2028a9b68164c87475a1ec9754453ad572) )
 
682
 
 
683
        ROM_REGION( 0x0400, "proms", 0 )
 
684
        ROM_LOAD( "n82s147a_1.bin", 0x0000, 0x0200, NO_DUMP )
 
685
        ROM_LOAD( "n82s147a_2.bin", 0x0200, 0x0200, NO_DUMP )
 
686
ROM_END
 
687
 
 
688
ROM_START( am_mg3 )
 
689
        ROM_REGION( 0x40000, "maincpu", 0 )     /* encrypted program ROM...*/
 
690
        ROM_LOAD( "mg_iii_vger_3.5-i-8205.bin", 0x00000, 0x40000, CRC(21d64029) SHA1(d5c3fde02833a96dd7a43481a489bfc4a5c9609d) )
 
691
 
 
692
        ROM_REGION( 0x180000, "gfx1", 0 )
 
693
        ROM_LOAD( "mg_iii_51_zg1.bin", 0x000000, 0x80000, CRC(84f86874) SHA1(c483a50df6a9a71ddfdf8530a894135f9b852b89) )
 
694
        ROM_LOAD( "mg_iii_51_zg2.bin", 0x080000, 0x80000, CRC(4425e535) SHA1(726c322c5d0b391b82e49dd1797ebf0abfa4a65a) )
 
695
        ROM_LOAD( "mg_iii_51_zg3.bin", 0x100000, 0x80000, CRC(36d4c0fa) SHA1(20352dbbb2ce2233be0f4f694ddf49b8f5d6a64f) )
 
696
 
 
697
        ROM_REGION( 0x20000, "other", 0 )
 
698
        ROM_LOAD( "v.bin", 0x00000, 0x20000, CRC(524767e2) SHA1(03a108494f42365c820fdfbcba9496bda86f3081) )
 
699
ROM_END
 
700
 
 
701
 
 
702
/************************************
 
703
*       Driver Initialization       *
 
704
************************************/
 
705
 
 
706
static DRIVER_INIT( amaticmg )
 
707
{
 
708
 
 
709
}
 
710
 
 
711
 
 
712
/************************************
 
713
*           Game Drivers            *
 
714
************************************/
 
715
 
 
716
/*    YEAR  NAME      PARENT  MACHINE   INPUT     INIT      ROT    COMPANY                FULLNAME                     FLAGS  */
 
717
GAME( 1996, am_uslot, 0,      amaticmg, amaticmg, amaticmg, ROT0, "Amatic Trading GMBH", "Amatic Unknown Slots Game",  GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
 
718
GAME( 2000, am_mg24,  0,      amaticmg, amaticmg, amaticmg, ROT0, "Amatic Trading GMBH", "Multi Game I (V.Ger 2.4)",   GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
 
719
GAME( 2000, am_mg3,   0,      amaticmg, amaticmg, amaticmg, ROT0, "Amatic Trading GMBH", "Multi Game III (V.Ger 3.5)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )