Previous 199869 Revisions Next

r33349 Wednesday 12th November, 2014 at 03:50:32 UTC by Peter Ferrie
tmaster.c: reverse-engineered the keys for all protected TouchMaster games; removed the protection hacks
[src/mame/drivers]tmaster.c

trunk/src/mame/drivers/tmaster.c
r241860r241861
1/***************************************************************************
2
3                      -= Touch Master / Galaxy Games =-
4
5         driver by Luca Elia (l.elia@tin.it) and Mariusz Wojcieszek
6
7
8CPU:    68000
9Video:  Blitter, double framebuffer
10Sound:  OKI6295
11
12[Touch Master]
13
14Input:  Microtouch touch screen
15Other:  Dallas NVRAM + optional RTC
16
17To Do:
18 - Coin optics
19 - Correct sound banking
20 - Proper protection emulation in tm4k and later games
21 - Find cause and fix hang in Solitaire Erotic (all Touchmaster version hang in this game)
22
23To be dumped and added:
24
25Touch Master 6000 <-- There doesn't seem to be a "6000" version
26Touch Master 7000 *
27Touch Master 8000 *
28
29* There are alternate region/state version with modifications due to legal issues
30  Touch Master (current set) is a Euro version, all other sets are "DOMESTIC" (AKA "Standard").
31  Is there a Touch Master 6000?  TM5K is version 7.10, then TM7K is version 8, TM8K is version 9.xx
32
33- There are known regional versions like California, Minnesota and likely others.  The difference
34  between regional sets are not known at this time.
35
36- Starting with Touch Master 2000, each later version is a chipswap for the mainboard.
37   IE: Touch Master 8000 chips can update any Touch Master mainboard 2000 through 7000
38  Each version (IE: 2000, 3000, 7000 ect) has different girls for Strip Poker ;-)
39
40Touch Master 8000 part lists (from service bulletin):
41
42A-5343-60194-3  U8  Sound
43A-5343-60194-2  U51 Program code
44A-5343-60194-1  U52 Program code
45A-5343-60194-6  U36 Graphics
46A-5343-60194-4  U37 Graphics
47A-5343-60194-7  U38 Graphics
48A-5343-60194-5  U39 Graphics
49A-5343-60194-8  U40 Graphics
50A-5343-60194-9  U41 Graphics
51A-21657-007     Security Key
52
53The above set is an undumped alternate set, maybe a Euro or special version.
54
55+---------------------------------------------------------------+
56|  W24257AK                          GRAPHICS.U37  GRAPHICS.U39 |
57|             SECURITY.J12                                      |
58| PROGRAM.U52          DS1232        GRAPHICS.U36  GRAPHICS.U38 |
59|                                                               |
60|  W24257AK                          GRAPHICS.U40  GRAPHICS.U41 |
61|               68HC000FN12                                     |
62| PROGRAM.U51                                                   |
63|                                                               |
64|  DS1225AB.U62                      XC3042A     W241024AJ (x2) |
65|                                                               |
66|   3.664MHZ  24MHz                              W241024AJ (x2) |
67| SCN68681       CY7C128A       SOUND.U8    32MHz               |
68|     LED2 LED1  CY7C128A                                       |
69|    U62                              M6295                     |
70-                                                               |
71 |Serial Port              LED3                               J8|
72-                                                            VOL|
73|  J11    J2      J5    J3       J10        J9          J6    J1|
74+---------------------------------------------------------------+
75
76U62 is a 16 DIN for a RTC chip (optional)
77J Connectors used for all input/output and power. PCB is NON-JAMMA
78
79Chips:
80   CPU: MC68HC000FN12
81 Video: XC3042A (Sigma Xilinx FPGA gate array)
82 Sound: OKI M6295
83   OSC: 32MHz, 24MHz & 8.664MHz
84 Other: SCN68681C1N40 (Serial controller chip)
85        DALLAS DS1225AB-85 Nonvolatile SRAM
86        DALLAS DS1204V (used for security)
87        DALLAS DS1232 (MicroMonitor Chip)
88   RAM: W24257AK-15 (x2 used for CPU data)
89        CY7C128A-55PC (x2 used for serial communication)
90        W241024AJ-15 (x4 used for blitter frame buffer)
91
92******************************************************************
93
94[Galaxy Games]
95
96Input:  Trackballs and buttons
97Other:  EEPROM
98To Do:
99
100- Coin optics
101
102***************************************************************************/
103
104#include "emu.h"
105#include "cpu/m68000/m68000.h"
106#include "sound/okim6295.h"
107#include "machine/eepromser.h"
108#include "machine/microtch.h"
109#include "machine/mc68681.h"
110#include "machine/nvram.h"
111#include "machine/ds1204.h"
112
113/***************************************************************************
114
115                                 General
116
117***************************************************************************/
118
119#define PATCH_PROTECTION ( 1 )
120
121class tmaster_state : public driver_device
122{
123public:
124   tmaster_state(const machine_config &mconfig, device_type type, const char *tag)
125      : driver_device(mconfig, type, tag),
126      m_maincpu(*this,"maincpu"),
127      m_microtouch(*this,"microtouch"),
128      m_regs(*this, "regs"),
129      m_galgames_ram(*this, "galgames_ram"),
130      m_oki(*this, "oki"),
131      m_duart(*this, "duart68681"),
132      m_screen(*this, "screen"),
133      m_palette(*this, "palette") { }
134
135   required_device<cpu_device> m_maincpu;
136   optional_device<microtouch_device> m_microtouch;
137   required_shared_ptr<UINT16> m_regs;
138   optional_shared_ptr<UINT16> m_galgames_ram;
139   required_device<okim6295_device> m_oki;
140   optional_device<mc68681_device> m_duart;
141   required_device<screen_device> m_screen;
142   required_device<palette_device> m_palette;
143
144   int m_okibank;
145   UINT8 m_rtc_ram[8];
146   bitmap_ind16 m_bitmap[2][2];
147   UINT16 m_color;
148   UINT16 m_addr;
149   UINT32 m_gfx_offs;
150   UINT32 m_gfx_size;
151   int (tmaster_state::*m_compute_addr) (UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
152   UINT16 m_galgames_cart;
153   UINT32 m_palette_offset;
154   UINT8 m_palette_index;
155   UINT8 m_palette_data[3];
156
157   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
158   DECLARE_READ16_MEMBER(rtc_r);
159   DECLARE_WRITE16_MEMBER(rtc_w);
160   DECLARE_WRITE16_MEMBER(tmaster_color_w);
161   DECLARE_WRITE16_MEMBER(tmaster_addr_w);
162   DECLARE_WRITE16_MEMBER(tmaster_blitter_w);
163   DECLARE_READ16_MEMBER(tmaster_blitter_r);
164   DECLARE_READ_LINE_MEMBER(read_rand);
165   DECLARE_READ16_MEMBER(galgames_eeprom_r);
166   DECLARE_WRITE16_MEMBER(galgames_eeprom_w);
167   DECLARE_WRITE16_MEMBER(galgames_palette_offset_w);
168   DECLARE_WRITE16_MEMBER(galgames_palette_data_w);
169   DECLARE_READ16_MEMBER(galgames_okiram_r);
170   DECLARE_WRITE16_MEMBER(galgames_okiram_w);
171   DECLARE_WRITE16_MEMBER(galgames_cart_sel_w);
172   DECLARE_READ16_MEMBER(galgames_cart_clock_r);
173   DECLARE_WRITE16_MEMBER(galgames_cart_clock_w);
174   DECLARE_READ16_MEMBER(galgames_cart_data_r);
175   DECLARE_WRITE16_MEMBER(galgames_cart_data_w);
176   DECLARE_READ16_MEMBER(dummy_read_01);
177   DECLARE_WRITE_LINE_MEMBER(write_oki_bank0);
178   DECLARE_WRITE_LINE_MEMBER(write_oki_bank1);
179   DECLARE_DRIVER_INIT(tm4k);
180   DECLARE_DRIVER_INIT(tm4ka);
181   DECLARE_DRIVER_INIT(tm4kb);
182   DECLARE_DRIVER_INIT(tm4kca);
183   DECLARE_DRIVER_INIT(tm4kmn);
184   DECLARE_DRIVER_INIT(tm4knj);
185   DECLARE_DRIVER_INIT(tm5k);
186   DECLARE_DRIVER_INIT(tm5ka);
187   DECLARE_DRIVER_INIT(tm5kca);
188   DECLARE_DRIVER_INIT(tm5kmn);
189   DECLARE_DRIVER_INIT(tm7k);
190   DECLARE_DRIVER_INIT(tm7ka);
191   DECLARE_DRIVER_INIT(tm7kmn);
192   DECLARE_DRIVER_INIT(tm7kmna);
193   DECLARE_DRIVER_INIT(tm7knj);
194   DECLARE_DRIVER_INIT(tm7keval);
195   DECLARE_DRIVER_INIT(tm8k);
196   DECLARE_DRIVER_INIT(galgames);
197   DECLARE_DRIVER_INIT(galgame2);
198   DECLARE_MACHINE_RESET(tmaster);
199   DECLARE_VIDEO_START(tmaster);
200   DECLARE_MACHINE_RESET(galgames);
201   DECLARE_VIDEO_START(galgames);
202   UINT32 screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
203   TIMER_DEVICE_CALLBACK_MEMBER(tm3k_interrupt);
204   UINT8 binary_to_BCD(UINT8 data);
205   int tmaster_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
206   int galgames_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
207   void tmaster_draw();
208   void galgames_update_rombank(UINT32 cart);
209};
210
211
212/***************************************************************************
213
214                                   Sound
215
216***************************************************************************/
217
218WRITE_LINE_MEMBER(tmaster_state::write_oki_bank0)
219{
220   if (state)
221      m_okibank |= 1;
222   else
223      m_okibank &= ~1;
224
225   m_oki->set_bank_base(m_okibank * 0x40000);
226}
227
228WRITE_LINE_MEMBER(tmaster_state::write_oki_bank1)
229{
230   if (state)
231      m_okibank |= 2;
232   else
233      m_okibank &= ~2;
234
235   m_oki->set_bank_base(m_okibank * 0x40000);
236}
237
238/***************************************************************************
239
240    68681 DUART <-> Microtouch touch screen controller communication
241
242***************************************************************************/
243
244WRITE_LINE_MEMBER(tmaster_state::duart_irq_handler)
245{
246   m_maincpu->set_input_line_and_vector(4, state, m_duart->get_irq_vector());
247};
248
249/***************************************************************************
250
251  DS1644 RTC
252
253***************************************************************************/
254
255
256UINT8 tmaster_state::binary_to_BCD(UINT8 data)
257{
258   data %= 100;
259
260   return ((data / 10) << 4) | (data %10);
261}
262
263READ16_MEMBER(tmaster_state::rtc_r)
264{
265   system_time systime;
266
267   machine().current_datetime(systime);
268   m_rtc_ram[0x1] = binary_to_BCD(systime.local_time.second);
269   m_rtc_ram[0x2] = binary_to_BCD(systime.local_time.minute);
270   m_rtc_ram[0x3] = binary_to_BCD(systime.local_time.hour);
271   m_rtc_ram[0x4] = binary_to_BCD(systime.local_time.weekday);
272   m_rtc_ram[0x5] = binary_to_BCD(systime.local_time.mday);
273   m_rtc_ram[0x6] = binary_to_BCD(systime.local_time.month+1);
274   m_rtc_ram[0x7] = binary_to_BCD(systime.local_time.year % 100);
275
276   return m_rtc_ram[offset];
277}
278
279WRITE16_MEMBER(tmaster_state::rtc_w)
280{
281   if ( offset == 0 )
282   {
283      m_rtc_ram[0x0] = data & 0xff;
284   }
285}
286
287
288/***************************************************************************
289
290                                Video & Blitter
291
292
293    Offset:     Bits:                     Value:
294
295        00
296
297        02      fedc ba-- ---- ----
298                ---- --9- ---- ----       Layer 1 Buffer To Display
299                ---- ---8 ---- ----       Layer 0 Buffer To Display
300                ---- ---- 7654 3210
301
302        04                                Width
303        06                                X
304
305        08                                Height - 1
306        0A                                Y
307
308        0C                                Source Address (low)
309        0E                                Source Address (mid)
310
311        10      fedc ba98 ---- ----
312                ---- ---- 7--- ----       Layer
313                ---- ---- -6-- ----       Buffer
314                ---- ---- --5- ----       Solid Fill
315                ---- ---- ---4 ----       flipped by lev.3 interrupt routine
316                ---- ---- ---- 3---       flipped by lev.2 interrupt routine
317                ---- ---- ---- -2--       flipped by lev.1 interrupt routine
318                ---- ---- ---- --1-       Flip Y
319                ---- ---- ---- ---0       Flip X
320
321    Addr Register:
322
323                fedc ba98 ---- ----       Solid Fill Pen
324                ---- ---- 7654 3210       Source Address (high)
325
326    Color Register:
327
328                fedc ba98 ---- ----       Source Pen (Pen Replacement Mode)
329                ---- ---- 7654 3210       Palette (0-f) / Destination Pen (Pen Replacement Mode)
330
331    A write to the source address (mid) triggers the blit.
332    A the end of the blit, a level 2 IRQ is issued.
333
334***************************************************************************/
335
336int tmaster_state::tmaster_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high)
337{
338   return (reg_low & 0xff) | ((reg_mid & 0x1ff) << 8) | (reg_high << 17);
339}
340
341int tmaster_state::galgames_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high)
342{
343   return reg_low | (reg_mid << 16);
344}
345
346VIDEO_START_MEMBER(tmaster_state,tmaster)
347{
348   int layer, buffer;
349   for (layer = 0; layer < 2; layer++)
350   {
351      for (buffer = 0; buffer < 2; buffer++)
352      {
353         m_screen->register_screen_bitmap(m_bitmap[layer][buffer]);
354         m_bitmap[layer][buffer].fill(0xff);
355      }
356   }
357
358   m_compute_addr = &tmaster_state::tmaster_compute_addr;
359}
360
361VIDEO_START_MEMBER(tmaster_state,galgames)
362{
363   VIDEO_START_CALL_MEMBER( tmaster );
364   m_compute_addr = &tmaster_state::galgames_compute_addr;
365}
366
367UINT32 tmaster_state::screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
368{
369   int layers_ctrl = -1;
370
371#ifdef MAME_DEBUG
372   if (machine().input().code_pressed(KEYCODE_Z))
373   {
374      int mask = 0;
375      if (machine().input().code_pressed(KEYCODE_Q))  mask |= 1;
376      if (machine().input().code_pressed(KEYCODE_W))  mask |= 2;
377      if (mask != 0) layers_ctrl &= mask;
378   }
379#endif
380
381
382   bitmap.fill(m_palette->black_pen(), cliprect);
383
384   if (layers_ctrl & 1)    copybitmap_trans(bitmap, m_bitmap[0][(m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
385   if (layers_ctrl & 2)    copybitmap_trans(bitmap, m_bitmap[1][(m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
386
387   return 0;
388}
389
390WRITE16_MEMBER(tmaster_state::tmaster_color_w)
391{
392   COMBINE_DATA( &m_color );
393}
394
395WRITE16_MEMBER(tmaster_state::tmaster_addr_w)
396{
397   COMBINE_DATA( &m_addr );
398}
399
400void tmaster_state::tmaster_draw()
401{
402   int x,y,x0,x1,y0,y1,dx,dy,flipx,flipy,sx,sy,sw,sh, addr, mode, layer,buffer, color;
403
404   UINT8 *gfxdata  =   memregion( "blitter" )->base() + m_gfx_offs;
405
406   UINT16 pen;
407
408   buffer  =   (m_regs[0x02/2] >> 8) & 3;   // 1 bit per layer, selects the currently displayed buffer
409   sw      =    m_regs[0x04/2];
410   sx      =    m_regs[0x06/2];
411   sh      =    m_regs[0x08/2] + 1;
412   sy      =    m_regs[0x0a/2];
413   addr    =   (this->*m_compute_addr)(
414               m_regs[0x0c/2],
415               m_regs[0x0e/2], m_addr);
416   mode    =    m_regs[0x10/2];
417
418   layer   =   (mode >> 7) & 1;    // layer to draw to
419   buffer  =   ((mode >> 6) & 1) ^ ((buffer >> layer) & 1);    // bit 6 selects whether to use the opposite buffer to that displayed
420   bitmap_ind16 &bitmap    =   m_bitmap[layer][buffer];
421
422   addr <<= 1;
423
424#ifdef MAME_DEBUG
425#if 0
426   logerror("%s: blit w %03x, h %02x, x %03x, y %02x, src %06x, fill/addr %04x, repl/color %04x, mode %02x\n", machine().describe_context(),
427         sw,sh,sx,sy, addr, m_addr, m_color, mode
428   );
429#endif
430#endif
431
432   flipx = mode & 1;
433   flipy = mode & 2;
434
435   if (flipx)  { x0 = sw-1;    x1 = -1;    dx = -1;    sx -= sw-1; }
436   else        { x0 = 0;       x1 = sw;    dx = +1;    }
437
438   if (flipy)  { y0 = sh-1;    y1 = -1;    dy = -1;    sy -= sh-1; }
439   else        { y0 = 0;       y1 = sh;    dy = +1;    }
440
441   sx = (sx & 0x7fff) - (sx & 0x8000);
442   sy = (sy & 0x7fff) - (sy & 0x8000);
443
444   color = (m_color & 0x0f) << 8;
445
446   switch (mode & 0x20)
447   {
448      case 0x00:                          // blit with transparency
449         if (addr > m_gfx_size - sw*sh)
450         {
451            logerror("%s: blit error, addr %06x out of bounds\n", machine().describe_context(),addr);
452            addr = m_gfx_size - sw*sh;
453         }
454
455         if ( mode & 0x200 )
456         {
457            // copy from ROM, replacing occurrences of src pen with dst pen
458
459            UINT8 dst_pen = (m_color >> 8) & 0xff;
460            UINT8 src_pen = (m_color >> 0) & 0xff;
461
462            for (y = y0; y != y1; y += dy)
463            {
464               for (x = x0; x != x1; x += dx)
465               {
466                  pen = gfxdata[addr++];
467
468                  if (pen == src_pen)
469                     pen = dst_pen;
470
471                  if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
472                     bitmap.pix16(sy + y, sx + x) = pen + color;
473               }
474            }
475         }
476         else
477         {
478            // copy from ROM as is
479
480            for (y = y0; y != y1; y += dy)
481            {
482               for (x = x0; x != x1; x += dx)
483               {
484                  pen = gfxdata[addr++];
485
486                  if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
487                     bitmap.pix16(sy + y, sx + x) = pen + color;
488               }
489            }
490         }
491         break;
492
493      case 0x20:                          // solid fill
494         pen = ((m_addr >> 8) & 0xff) + color;
495
496         if ((pen & 0xff) == 0xff)
497            pen = 0xff;
498
499         for (y = y0; y != y1; y += dy)
500         {
501            for (x = x0; x != x1; x += dx)
502            {
503               if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
504                  bitmap.pix16(sy + y, sx + x) = pen;
505            }
506         }
507         break;
508
509   }
510}
511
512WRITE16_MEMBER(tmaster_state::tmaster_blitter_w)
513{
514   COMBINE_DATA( m_regs + offset );
515   switch (offset*2)
516   {
517      case 0x0e:
518         tmaster_draw();
519         m_maincpu->set_input_line(2, HOLD_LINE);
520         break;
521   }
522}
523
524READ16_MEMBER(tmaster_state::tmaster_blitter_r)
525{
526   return 0x0000;  // bit 7 = 1 -> blitter busy
527}
528
529/***************************************************************************
530
531                                Memory Maps
532
533***************************************************************************/
534
535/***************************************************************************
536                                Touch Master
537***************************************************************************/
538
539READ_LINE_MEMBER(tmaster_state::read_rand)
540{
541   return machine().rand()&1;
542}
543
544static ADDRESS_MAP_START( tmaster_map, AS_PROGRAM, 16, tmaster_state )
545   AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
546   AM_RANGE( 0x200000, 0x27ffff ) AM_RAM
547   AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram")
548   AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE(rtc_r, rtc_w )
549
550   AM_RANGE( 0x300010, 0x300011 ) AM_READ_PORT("COIN")
551
552   AM_RANGE( 0x300020, 0x30003f ) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
553
554   AM_RANGE( 0x300040, 0x300041 ) AM_WRITE_PORT("OUT")
555
556   AM_RANGE( 0x300070, 0x300071 ) AM_WRITE(tmaster_addr_w )
557
558   AM_RANGE( 0x500000, 0x500011 ) AM_WRITE(tmaster_blitter_w ) AM_SHARE("regs")
559   AM_RANGE( 0x500010, 0x500011 ) AM_READ(tmaster_blitter_r )
560
561   AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often
562
563   AM_RANGE( 0x600000, 0x601fff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
564
565   AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
566
567   AM_RANGE( 0x800010, 0x800011 ) AM_WRITE(tmaster_color_w )
568ADDRESS_MAP_END
569
570
571/***************************************************************************
572                                Galaxy Games
573***************************************************************************/
574
575// ROM/RAM Banking
576
577#define GALGAMES_BANK_000000_R  "000000_r"
578#define GALGAMES_BANK_000000_W  "000000_w"
579#define GALGAMES_BANK_200000_R  "200000_r"
580#define GALGAMES_BANK_200000_W  "200000_w"
581#define GALGAMES_BANK_240000_R  "240000_r"
582
583#define GALGAMES_RAM    0
584#define GALGAMES_ROM0   1
585#define GALGAMES_ROM1   2
586#define GALGAMES_ROM2   3
587#define GALGAMES_ROM3   4
588
589
590// NVRAM (5 x EEPROM)
591
592#define GALGAMES_EEPROM_BIOS  "eeprom_bios"
593#define GALGAMES_EEPROM_CART1 "eeprom_cart1"
594#define GALGAMES_EEPROM_CART2 "eeprom_cart2"
595#define GALGAMES_EEPROM_CART3 "eeprom_cart3"
596#define GALGAMES_EEPROM_CART4 "eeprom_cart4"
597
598static const char *const galgames_eeprom_names[5] = { GALGAMES_EEPROM_BIOS, GALGAMES_EEPROM_CART1, GALGAMES_EEPROM_CART2, GALGAMES_EEPROM_CART3, GALGAMES_EEPROM_CART4 };
599
600READ16_MEMBER(tmaster_state::galgames_eeprom_r)
601{
602   eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
603
604   return eeprom->do_read() ? 0x80 : 0x00;
605}
606
607WRITE16_MEMBER(tmaster_state::galgames_eeprom_w)
608{
609   if (data & ~0x0003)
610      logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",space.device().safe_pc(),data);
611
612   if ( ACCESSING_BITS_0_7 )
613   {
614      eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
615
616      // latch the bit
617      eeprom->di_write(data & 0x0001);
618
619      // clock line asserted: write latch or select next bit to read
620      eeprom->clk_write((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE );
621   }
622}
623
624// BT481A Palette RAMDAC
625
626WRITE16_MEMBER(tmaster_state::galgames_palette_offset_w)
627{
628   if (ACCESSING_BITS_0_7)
629   {
630      m_palette_offset = data & 0xff;
631      m_palette_index = 0;
632   }
633}
634WRITE16_MEMBER(tmaster_state::galgames_palette_data_w)
635{
636   if (ACCESSING_BITS_0_7)
637   {
638      m_palette_data[m_palette_index] = data & 0xff;
639      if (++m_palette_index == 3)
640      {
641         int palette_base;
642         for (palette_base = 0; palette_base < 0x1000; palette_base += 0x100)
643            m_palette->set_pen_color(m_palette_offset + palette_base, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
644         m_palette_index = 0;
645         m_palette_offset++;
646      }
647   }
648}
649
650// Sound
651READ16_MEMBER(tmaster_state::galgames_okiram_r)
652{
653   return memregion("oki")->base()[offset] | 0xff00;
654}
655WRITE16_MEMBER(tmaster_state::galgames_okiram_w)
656{
657   if (ACCESSING_BITS_0_7)
658      memregion("oki")->base()[offset] = data & 0xff;
659}
660
661// Carts (preliminary, PIC communication is not implemented)
662
663void tmaster_state::galgames_update_rombank(UINT32 cart)
664{
665   m_galgames_cart = cart;
666
667   m_gfx_offs = 0x200000 * cart;
668
669   if (membank(GALGAMES_BANK_000000_R)->entry() == GALGAMES_RAM)
670      membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_ROM0 + m_galgames_cart);  // rom
671
672   membank(GALGAMES_BANK_240000_R)->set_entry(GALGAMES_ROM0 + m_galgames_cart);  // rom
673}
674
675WRITE16_MEMBER(tmaster_state::galgames_cart_sel_w)
676{
677   // cart selection (0 1 2 3 4 7)
678
679   if (ACCESSING_BITS_0_7)
680   {
681      int i;
682
683      switch( data & 0xff )
684      {
685         case 0x07:      // 7 resets the eeprom
686            for (i = 0; i < 5; i++)
687               machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[i])->cs_write(CLEAR_LINE);
688            break;
689
690         case 0x00:
691         case 0x01:
692         case 0x02:
693         case 0x03:
694         case 0x04:
695            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[data & 0xff])->cs_write(ASSERT_LINE);
696            galgames_update_rombank(data & 0xff);
697            break;
698
699         default:
700            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[0])->cs_write(ASSERT_LINE);
701            galgames_update_rombank(0);
702            logerror("%06x: unknown cart sel = %04x\n", space.device().safe_pc(), data);
703            break;
704      }
705   }
706}
707
708READ16_MEMBER(tmaster_state::galgames_cart_clock_r)
709{
710   return 0x0080;
711}
712
713WRITE16_MEMBER(tmaster_state::galgames_cart_clock_w)
714{
715   if (ACCESSING_BITS_0_7)
716   {
717      // bit 3 = clock
718
719      // ROM/RAM banking
720      if ((data & 0xf7) == 0x05)
721      {
722         membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_RAM);   // ram
723         galgames_update_rombank(m_galgames_cart);
724         logerror("%06x: romram bank = %04x\n", space.device().safe_pc(), data);
725      }
726      else
727      {
728         membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_ROM0);  // rom
729         membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_RAM);   // ram
730         logerror("%06x: unknown romram bank = %04x\n", space.device().safe_pc(), data);
731      }
732   }
733}
734
735READ16_MEMBER(tmaster_state::galgames_cart_data_r)
736{
737   return 0;
738}
739WRITE16_MEMBER(tmaster_state::galgames_cart_data_w)
740{
741}
742
743
744READ16_MEMBER(tmaster_state::dummy_read_01)
745{
746   return 0x3; // Pass the check at PC = 0xfae & a later one
747}
748
749static ADDRESS_MAP_START( galgames_map, AS_PROGRAM, 16, tmaster_state )
750
751   AM_RANGE( 0x000000, 0x03ffff ) AM_READ_BANK(GALGAMES_BANK_000000_R) AM_WRITE_BANK(GALGAMES_BANK_000000_W) AM_SHARE("galgames_ram")
752   AM_RANGE( 0x040000, 0x1fffff ) AM_ROM AM_REGION( "maincpu", 0x40000 )
753   AM_RANGE( 0x200000, 0x23ffff ) AM_READ_BANK(GALGAMES_BANK_200000_R) AM_WRITE_BANK(GALGAMES_BANK_200000_W)
754   AM_RANGE( 0x240000, 0x3fffff ) AM_READ_BANK(GALGAMES_BANK_240000_R)
755
756   AM_RANGE( 0x400000, 0x400011 ) AM_WRITE(tmaster_blitter_w ) AM_SHARE("regs")
757   AM_RANGE( 0x400012, 0x400013 ) AM_WRITE(tmaster_addr_w )
758   AM_RANGE( 0x400014, 0x400015 ) AM_WRITE(tmaster_color_w )
759   AM_RANGE( 0x400020, 0x400021 ) AM_READ(tmaster_blitter_r )
760
761   AM_RANGE( 0x600000, 0x600001 ) AM_READ(dummy_read_01 ) AM_WRITENOP
762   AM_RANGE( 0x700000, 0x700001 ) AM_READ(dummy_read_01 ) AM_WRITENOP
763   AM_RANGE( 0x800020, 0x80003f ) AM_NOP   // ?
764   AM_RANGE( 0x900000, 0x900001 ) AM_WRITE(watchdog_reset16_w )
765
766   AM_RANGE( 0xa00000, 0xa00001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
767   AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15
768
769   AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE(galgames_palette_offset_w )
770   AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE(galgames_palette_data_w )
771
772   AM_RANGE( 0xd00000, 0xd00001 ) AM_READ_PORT("TRACKBALL_1_X")
773   AM_RANGE( 0xd00000, 0xd00001 ) AM_WRITENOP
774   AM_RANGE( 0xd00002, 0xd00003 ) AM_READ_PORT("TRACKBALL_1_Y")
775   AM_RANGE( 0xd00004, 0xd00005 ) AM_READ_PORT("TRACKBALL_2_X")
776   AM_RANGE( 0xd00006, 0xd00007 ) AM_READ_PORT("TRACKBALL_2_Y")
777   AM_RANGE( 0xd00008, 0xd00009 ) AM_READ_PORT("P1")
778   AM_RANGE( 0xd0000a, 0xd0000b ) AM_READ_PORT("P2")
779   AM_RANGE( 0xd0000c, 0xd0000d ) AM_READ_PORT("SYSTEM") AM_WRITENOP
780
781   AM_RANGE( 0xd0000e, 0xd0000f ) AM_WRITE(galgames_cart_sel_w )
782   AM_RANGE( 0xd00010, 0xd00011 ) AM_READWRITE(galgames_eeprom_r, galgames_eeprom_w )
783   AM_RANGE( 0xd00012, 0xd00013 ) AM_READWRITE(galgames_cart_data_r, galgames_cart_data_w )
784   AM_RANGE( 0xd00014, 0xd00015 ) AM_READWRITE(galgames_cart_clock_r, galgames_cart_clock_w )
785
786ADDRESS_MAP_END
787
788
789/***************************************************************************
790
791                                Input Ports
792
793***************************************************************************/
794static INPUT_PORTS_START( tm )
795   PORT_START("COIN")
796   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN5 )    // "M. Coin 1 Input"
797   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN6 )    // "M. Coin 2 Input"
798   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BILL1 ) PORT_IMPULSE(2)    // "DBV Input"
799   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
800   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )  // service coin?
801   PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW )
802   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) // "Calibrate"
803   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
804   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
805   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
806   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
807   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, read_rand )
808   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN1 )    // "E. Coin 1" (ECA?) tmaster defaults to e. coin,
809   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN2 )    // "E. Coin 2" (ECA?) rather than m. coin
810   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 )    // "E. Coin 3" (ECA?) so they're coin1-coin4
811   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 )    // "E. Coin 4" (ECA?)
812
813   PORT_START("OUT")
814   //0800?
815   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, write_oki_bank1 )
816   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, write_oki_bank0 )
817   //0002?
818INPUT_PORTS_END
819
820static INPUT_PORTS_START( tm2k )
821   PORT_INCLUDE( tm )
822
823   PORT_MODIFY("COIN")
824   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN3 )    // "E. Coin 1" (ECA mech) The rest of the tm games
825   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN4 )    // "E. Coin 2" (ECA mech) Default to m. coin
826   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN5 )    // "E. Coin 3" (ECA mech) So these are coin3-coin6
827   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN6 )    // "E. Coin 4" (ECA mech)
828INPUT_PORTS_END
829
830static INPUT_PORTS_START( tm4k )
831   PORT_INCLUDE( tm2k )
832
833   PORT_MODIFY("COIN")
834   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, read_dq )
835
836   PORT_MODIFY( "OUT" )
837   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_rst )
838   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_dq )
839   PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_clk )
840INPUT_PORTS_END
841
842static INPUT_PORTS_START( galgames )
843   PORT_START("P1")
844   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
845   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
846   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
847   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
848   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)   // Button A (right)
849   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)   // Button B (left)
850   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
851   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
852   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
853
854   PORT_START("P2")
855   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
856   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
857   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
858   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
859   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)   // Button A (right)
860   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)   // Button B (left)
861   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1)          // DBA (coin)
862   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
863   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
864
865   PORT_START("SYSTEM")
866   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )    // CS 1 (coin)
867   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )    // CS 2 (coin)
868   PORT_SERVICE( 0x0004, IP_ACTIVE_HIGH )  // System Check
869   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
870   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
871   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
872   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
873   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
874   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
875
876   PORT_START("TRACKBALL_1_X")
877   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_RESET
878
879   PORT_START("TRACKBALL_1_Y")
880   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_RESET
881
882   PORT_START("TRACKBALL_2_X")
883   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(2) PORT_RESET
884
885   PORT_START("TRACKBALL_2_Y")
886   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(2) PORT_RESET
887INPUT_PORTS_END
888
889
890/***************************************************************************
891
892                               Machine Drivers
893
894***************************************************************************/
895
896MACHINE_RESET_MEMBER(tmaster_state,tmaster)
897{
898   m_gfx_offs = 0;
899   m_gfx_size = memregion("blitter")->bytes();
900
901}
902
903TIMER_DEVICE_CALLBACK_MEMBER(tmaster_state::tm3k_interrupt)
904{
905   int scanline = param;
906
907   if(scanline == 0) // vblank, FIXME
908      m_maincpu->set_input_line(3, HOLD_LINE);
909   else if((scanline % 16) == 0)
910      m_maincpu->set_input_line(1, HOLD_LINE);
911
912   // lev 2 triggered at the end of the blit
913}
914
915static MACHINE_CONFIG_START( tm, tmaster_state )
916   MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12MHz */
917   MCFG_CPU_PROGRAM_MAP(tmaster_map)
918   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1)
919
920   MCFG_MACHINE_RESET_OVERRIDE(tmaster_state,tmaster)
921
922   MCFG_MC68681_ADD( "duart68681", XTAL_8_664MHz / 2 /*??*/)
923   MCFG_MC68681_IRQ_CALLBACK(WRITELINE(tmaster_state, duart_irq_handler))
924   MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("microtouch", microtouch_device, rx))
925
926   MCFG_MICROTOUCH_ADD( "microtouch", 9600, DEVWRITELINE("duart68681", mc68681_device, rx_a_w) )
927
928   MCFG_NVRAM_ADD_0FILL("nvram")
929
930   MCFG_SCREEN_ADD("screen", RASTER)
931   MCFG_SCREEN_REFRESH_RATE(60)
932   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
933   MCFG_SCREEN_SIZE(400, 256)
934   MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
935   MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
936   MCFG_SCREEN_PALETTE("palette")
937
938   MCFG_PALETTE_ADD("palette", 0x1000)
939   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
940
941   MCFG_VIDEO_START_OVERRIDE(tmaster_state,tmaster)
942
943   MCFG_SPEAKER_STANDARD_MONO("mono")
944
945   MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
946   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
947MACHINE_CONFIG_END
948
949static MACHINE_CONFIG_DERIVED( tm2k, tm )
950   MCFG_OKIM6295_REPLACE("oki", XTAL_32MHz / 16, OKIM6295_PIN7_HIGH)  /* 2MHz; clock frequency & pin 7 not verified */
951   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
952MACHINE_CONFIG_END
953
954static MACHINE_CONFIG_DERIVED( tm4k, tm2k )
955   MCFG_DS1204_ADD("ds1204")
956MACHINE_CONFIG_END
957
958MACHINE_RESET_MEMBER(tmaster_state,galgames)
959{
960   m_gfx_offs = 0;
961   m_gfx_size = 0x200000;
962
963   membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_ROM0);  // rom
964   membank(GALGAMES_BANK_000000_W)->set_entry(GALGAMES_RAM);       // ram
965
966   membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_RAM);       // ram
967   membank(GALGAMES_BANK_200000_W)->set_entry(GALGAMES_RAM);       // ram
968
969   membank(GALGAMES_BANK_240000_R)->set_entry(GALGAMES_ROM0);  // rom
970
971   galgames_update_rombank(0);
972
973   m_maincpu->reset();
974}
975
976static MACHINE_CONFIG_START( galgames, tmaster_state )
977   MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2)
978   MCFG_CPU_PROGRAM_MAP(galgames_map)
979   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1)
980
981   // 5 EEPROMs on the motherboard (for BIOS + 4 Carts)
982   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_BIOS)
983   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART1)
984   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART2)
985   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART3)
986   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART4)
987
988   MCFG_MACHINE_RESET_OVERRIDE(tmaster_state, galgames )
989
990   /* video hardware */
991   MCFG_SCREEN_ADD("screen", RASTER)
992   MCFG_SCREEN_REFRESH_RATE(60)
993   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
994   MCFG_SCREEN_SIZE(400, 256)
995   MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
996   MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
997   MCFG_SCREEN_PALETTE("palette")
998
999   MCFG_PALETTE_ADD("palette", 0x1000) // only 0x100 used
1000   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
1001
1002   MCFG_VIDEO_START_OVERRIDE(tmaster_state,galgames)
1003
1004   /* sound hardware */
1005   MCFG_SPEAKER_STANDARD_MONO("mono")
1006
1007   MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 8, OKIM6295_PIN7_LOW) // clock frequency & pin 7 not verified
1008   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
1009MACHINE_CONFIG_END
1010
1011/*
1012    Each cartridge contains a PIC, that should provide, among other things, the following header:
1013
1014    4345 5331 3939 3700 0c10 ffb3 3c00 0000       "CES1997"
1015    fffe f2f7 8557 c119 0000 0000 2340 188e
1016*/
1017static MACHINE_CONFIG_DERIVED( galgame2, galgames )
1018//  MCFG_CPU_ADD("pic", PIC12C508, XTAL_24MHz / 2)
1019MACHINE_CONFIG_END
1020
1021
1022/***************************************************************************
1023
1024                               ROMs Loading
1025
1026***************************************************************************/
1027
1028/***************************************************************************
1029
1030Touch Master
10311996, Midway
1032
103368000 @ 12MHz
1034u51 - u52 program code
1035u36 -> u39 gfx
1036u8 sound
1037OKI6295
1038NVSRAM DS1225a
1039Philips SCN68681
1040Xlinx XC3042a
1041
1042***************************************************************************/
1043
1044ROM_START( tm )
1045   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1046   ROM_LOAD16_BYTE( "tmaster_v3.00_euro.u51", 0x000000, 0x080000, CRC(edaa5874) SHA1(48b99bc7f5a6453def265967ca7d8eefdf9dc97b) ) /* Ver: 3.00 Euro 11-25-96 */
1047   ROM_LOAD16_BYTE( "tmaster_v3.00_euro.u52", 0x000001, 0x080000, CRC(e9fd30fc) SHA1(d91ea05d5f574603883336729fb9df705688945d) ) /* Ver: 3.00 Euro 11-25-96 */
1048
1049   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1050   ROM_LOAD16_BYTE( "tmaster_v2.1.u38", 0x100000, 0x080000, CRC(68885ef6) SHA1(010602b59c33c3e490491a296ddaf8952e315b83) ) /* Marked as Rev 2.1 */
1051   ROM_LOAD16_BYTE( "tmaster_v2.1.u36", 0x100001, 0x080000, CRC(204096ec) SHA1(9239923b7eedb6003c63ef2e8ff224edee657bbc) ) /* Marked as Rev 2.1 */
1052   // unused gap
1053   ROM_LOAD16_BYTE( "tmaster_v3.00.u39", 0x300000, 0x080000, CRC(cbb716cb) SHA1(4e8d8f6cbfb25a8161ff8fe7505d6b209650dd2b) ) /* Marked as Rev 3.00 */
1054   ROM_LOAD16_BYTE( "tmaster_v3.00.u37", 0x300001, 0x080000, CRC(e0b6a9f7) SHA1(7e057ca87833c682e5be03668469259bbdefbf20) ) /* Marked as Rev 3.00 */
1055
1056   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1057   ROM_LOAD( "tmaster.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1058   ROM_CONTINUE(           0xc0000, 0x040000 )
1059ROM_END
1060
1061ROM_START( tmdo )
1062   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1063   ROM_LOAD16_BYTE( "tmaster_v2.2-01.u51", 0x000000, 0x080000, CRC(12e1b085) SHA1(b01325e0067204991a707db24e3e2036708ebccf) ) /* Ver: 2.2-01 Standard 10-17-96 */
1064   ROM_LOAD16_BYTE( "tmaster_v2.2-01.u52", 0x000001, 0x080000, CRC(6c2c643f) SHA1(8dd7930f4c499483ca46b0b97bde94cb8d6e06aa) ) /* Ver: 2.2-01 Standard 10-17-96 */
1065
1066   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1067   ROM_LOAD16_BYTE( "tmaster_v2.1.u38", 0x100000, 0x080000, CRC(68885ef6) SHA1(010602b59c33c3e490491a296ddaf8952e315b83) ) /* Marked as Rev 2.1 */
1068   ROM_LOAD16_BYTE( "tmaster_v2.1.u36", 0x100001, 0x080000, CRC(204096ec) SHA1(9239923b7eedb6003c63ef2e8ff224edee657bbc) ) /* Marked as Rev 2.1 */
1069   // unused gap
1070   ROM_LOAD16_BYTE( "tmaster_v2.1.u39", 0x300000, 0x080000, CRC(a4445260) SHA1(915347f69d7ea45f8f299a67d77ff437983495d2) ) /* Marked as Rev 2.1 */
1071   ROM_LOAD16_BYTE( "tmaster_v2.1.u37", 0x300001, 0x080000, CRC(0e140a3e) SHA1(10a34e3b95c0d36fe687fe8c1124ef244a93d720) ) /* Marked as Rev 2.1 */
1072
1073   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1074   ROM_LOAD( "tmaster.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1075   ROM_CONTINUE(           0xc0000, 0x040000 )
1076ROM_END
1077
1078/***************************************************************************
1079
1080Touchmaster 2000
1081by Midway (c) 1996
1082touchscreen game
1083
1084All chips are ST M27C4001
1085---------------------------
1086
1087Name_Board Location        Version               Use             Checksum
1088-------------------------------------------------------------------------
1089TM2K_v463.u51              4.63 Game Program & Cpu instructions   2342
1090TM2K_v463.u52              4.63 Game Program & Cpu instructions   4619
1091
1092TM2K_v402.u51              4.02 Game Program & Cpu instructions   c517
1093TM2K_v402.u52              4.02 Game Program & Cpu instructions   e82c
1094
1095TM2K_v400.u51              4.00 Game Program & Cpu instructions   a49b
1096TM2K_v400.u52              4.00 Game Program & Cpu instructions   7c2f
1097
1098TM2K_graphic.u36           4.00 Video Images & Graphics           20cb
1099TM2K_graphic.u37           4.00 Video Images & Graphics           f5cf
1100TM2K_graphic.u38           4.00 Video Images & Graphics           14c7
1101TM2K_graphic.u39           4.00 Video Images & Graphics           043e
1102TM2K_graphic.u40           4.62 Video Images & Graphics           14c7
1103TM2K_graphic.u41           4.62 Video Images & Graphics           9334
1104TM2K_sound.u8              1.0  Audio Program & sounds            dbde
1105
1106Does not require a security key
1107
1108***************************************************************************/
1109
1110ROM_START( tm2k )
1111   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1112   ROM_LOAD16_BYTE( "tm2k_v4.63.u51", 0x000000, 0x100000, CRC(f73fdb23) SHA1(d0a5e98d5de85fd3f29d1efe6b7aebe9e348c59b) ) /* Ver: 4.63 Standard 9-3-97 */
1113   ROM_LOAD16_BYTE( "tm2k_v4.63.u52", 0x000001, 0x100000, CRC(79ac719c) SHA1(7717362ea42fc36009e0fed430f07c946553bfd3) ) /* Ver: 4.63 Standard 9-3-97 */
1114
1115   ROM_REGION( 0x600000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1116   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* First 4 graphic roms marked as Rev 4.00 */
1117   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1118   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1119   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1120   ROM_LOAD16_BYTE( "tm2k_graphic.u41", 0x500000, 0x080000, CRC(abac4ad3) SHA1(d3944a39b46f3e67ddb0ff7047685c6c716a393c) ) /* Last 2 graphics roms marked as Rev 4.62 */
1121   ROM_LOAD16_BYTE( "tm2k_graphic.u40", 0x500001, 0x080000, CRC(ca86b9a2) SHA1(bb639af4e0ee48c3231de5f0a0f14de20836216a) )
1122
1123   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1124   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1125   ROM_CONTINUE(              0xc0000, 0x040000 )
1126ROM_END
1127
1128ROM_START( tm2ka )
1129   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1130   ROM_LOAD16_BYTE( "tm2k_v4.02.u51", 0x000000, 0x080000, CRC(47269aeb) SHA1(6b7ebfde290f7d21a36a72b00dc6523490581edb) ) /* Ver: 4.02 Standard 5-30-97 */
1131   ROM_LOAD16_BYTE( "tm2k_v4.02.u52", 0x000001, 0x080000, CRC(2e3564ac) SHA1(9a71f38841bc17c291cb3f513b18ebe50fc18d9f) ) /* Ver: 4.02 Standard 5-30-97 */
1132
1133   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1134   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* All 4 graphic roms marked as Rev 4.00 */
1135   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1136   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1137   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1138   /* Sockets U40 & U41 not populated with earlier Touchmaster 2000 sets */
1139
1140   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1141   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1142   ROM_CONTINUE(              0xc0000, 0x040000 )
1143ROM_END
1144
1145ROM_START( tm2kb )
1146   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1147   ROM_LOAD16_BYTE( "tm2k_v4.00.u51", 0x000000, 0x080000, CRC(c110502b) SHA1(e9415ed23b9bb0851548e75c208ebcbe6ac2a708) ) /* Ver: 4.00 Standard 5-16-97 */
1148   ROM_LOAD16_BYTE( "tm2k_v4.00.u52", 0x000001, 0x080000, CRC(a17c1d6e) SHA1(5ecb8f27f75469ab9600b3f640eb1acc7a3980e0) ) /* Ver: 4.00 Standard 5-16-97 */
1149
1150   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1151   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* All 4 graphic roms marked as Rev 4.00 */
1152   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1153   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1154   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1155   /* Sockets U40 & U41 not populated with earlier Touchmaster 2000 sets */
1156
1157   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1158   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1159   ROM_CONTINUE(              0xc0000, 0x040000 )
1160ROM_END
1161
1162/***************************************************************************
1163
1164Touchmaster 3000
1165by Midway (c) 1997
1166touchscreen game
1167
1168All chips are SGS 27C801 (some kits/upgrades used mask roms)
1169---------------------------
1170
1171Name_Board Location        Version               Use             Checksum
1172-------------------------------------------------------------------------
1173TM3K_v502.u51              5.02 Game Program & Cpu instructions   c308
1174TM3K_v502.u52              5.02 Game Program & Cpu instructions   4d5e
1175
1176TM3K_v501.u51              5.01 Game Program & Cpu instructions   0c6c
1177TM3K_v501.u52              5.01 Game Program & Cpu instructions   b2d8
1178
1179TM3K_graphic.u36           5.0  Video Images & Graphics           54f1
1180TM3K_graphic.u37           5.0  Video Images & Graphics           4856
1181TM3K_graphic.u38           5.0  Video Images & Graphics           5493
1182TM3K_graphic.u39           5.0  Video Images & Graphics           6029
1183TM3K_graphic.u40           5.0  Video Images & Graphics           ccb4
1184TM3K_graphic.u41           5.0  Video Images & Graphics           e9ab
1185TM3K_sound.u8              5.0  Audio Program & sounds            64d5
1186
1187Does not require a security key
1188
1189Box labeled as:
1190
1191TMSTR 3000 UPGRADE KIT USA-DBV
119263373100870
1193
1194***************************************************************************/
1195
1196ROM_START( tm3k )
1197   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1198   ROM_LOAD16_BYTE( "tm3k_v5.02.u51", 0x000000, 0x100000, CRC(6267e2bd) SHA1(c81e5cd059a9ad2f6a36261738e39740a1a3a03f) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */
1199   ROM_LOAD16_BYTE( "tm3k_v5.02.u52", 0x000001, 0x100000, CRC(836fdf1e) SHA1(2ee9c0929950afb72f172b253d6c392e9a698037) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */
1200
1201   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1202   ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */
1203   ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */
1204   ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */
1205   ROM_LOAD16_BYTE( "tm3k_graphic.u37", 0x200001, 0x100000, CRC(18f50eb3) SHA1(a7c9d3b24b5fd110380ec87d9200d55cad473efc) ) /* Labeled TOUCHMASTER U37 STANDARD 5.0 (pink label) */
1206   ROM_LOAD16_BYTE( "tm3k_graphic.u41", 0x400000, 0x100000, CRC(c35c0536) SHA1(a29fd88e8f3e124f6e84012c3573616f6447eeaa) ) /* Labeled TOUCHMASTER U41 STANDARD 5.0 (pink label) */
1207   ROM_LOAD16_BYTE( "tm3k_graphic.u40", 0x400001, 0x100000, CRC(353df7ca) SHA1(d6c5d5449af6b6a3acee219778583904c5b554b4) ) /* Labeled TOUCHMASTER U40 STANDARD 5.0 (pink label) */
1208
1209   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1210   ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */
1211ROM_END
1212
1213ROM_START( tm3ka )
1214   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1215   ROM_LOAD16_BYTE( "tm3k_v5.01.u51", 0x000000, 0x100000, CRC(c9522279) SHA1(e613b791f831271722f05b7e96c35519fa9fc174) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */
1216   ROM_LOAD16_BYTE( "tm3k_v5.01.u52", 0x000001, 0x100000, CRC(8c6a0db7) SHA1(6b0eae60ea471cd8c4001749ac2677d8d4532567) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */
1217
1218   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1219   ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */
1220   ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */
1221   ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */
1222   ROM_LOAD16_BYTE( "tm3k_graphic.u37", 0x200001, 0x100000, CRC(18f50eb3) SHA1(a7c9d3b24b5fd110380ec87d9200d55cad473efc) ) /* Labeled TOUCHMASTER U37 STANDARD 5.0 (pink label) */
1223   ROM_LOAD16_BYTE( "tm3k_graphic.u41", 0x400000, 0x100000, CRC(c35c0536) SHA1(a29fd88e8f3e124f6e84012c3573616f6447eeaa) ) /* Labeled TOUCHMASTER U41 STANDARD 5.0 (pink label) */
1224   ROM_LOAD16_BYTE( "tm3k_graphic.u40", 0x400001, 0x100000, CRC(353df7ca) SHA1(d6c5d5449af6b6a3acee219778583904c5b554b4) ) /* Labeled TOUCHMASTER U40 STANDARD 5.0 (pink label) */
1225
1226   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1227   ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */
1228ROM_END
1229
1230/***************************************************************************
1231
1232Touchmaster 4000
1233by Midway (c) 1998
1234touchscreen game
1235
1236All chips are SGS 27C801 (some kits/upgrades used mask roms)
1237---------------------------
1238
1239Name_Board Location        Version               Use                      Checksum
1240-----------------------------------------------------------------------------------
1241TM4K_v603.u51              6.03 Game Program & Cpu instructions 96B0
1242TM4K_v603.u52              6.03 Game Program & Cpu instructions 2842
1243
1244TM4K_v602.u51              6.02 Game Program & Cpu instructions FEA0
1245TM4K_v602.u52              6.02 Game Program & Cpu instructions 9A71
1246
1247TM4K_v601.u51              6.01 Game Program & Cpu instructions 6FF1
1248TM4K_v601.u52              6.01 Game Program & Cpu instructions 6643
1249
1250TM4K_graphic.u36           6.0  Video Images & Graphics         54F1 (same as TM3K)
1251TM4K_graphic.u37           6.0  Video Images & Graphics         609E
1252TM4K_graphic.u38           6.0  Video Images & Graphics         5493 (same as TM3K)
1253TM4K_graphic.u39           6.0  Video Images & Graphics         CB90
1254TM4K_graphic.u40           6.0  Video Images & Graphics         208A
1255TM4K_graphic.u41           6.0  Video Images & Graphics         385D
1256TM4K_sound.u8              6.0  Audio Program & sounds          DE0B
1257
1258J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-003
1259
1260***************************************************************************/
1261
1262ROM_START( tm4k )
1263   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1264   ROM_LOAD16_BYTE( "tm4k_v6.03.u51", 0x000000, 0x100000, CRC(0c88c856) SHA1(4c60c09812ab05f9dccef3038a5ddbd4632dbf4e) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.03 (Standard 6-23-98) */
1265   ROM_LOAD16_BYTE( "tm4k_v6.03.u52", 0x000001, 0x100000, CRC(9320bfe9) SHA1(cc3a51f439c139ca30efe28a817cf4f68679180e) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.03 (Standard 6-23-98) */
1266
1267   ROM_REGION( 0x000022, "ds1204", 0 )
1268   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1269
1270   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1271   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1272   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1273   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1274   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1275   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1276   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1277
1278   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1279   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1280ROM_END
1281
1282ROM_START( tm4knj ) /* New Jersey version only */
1283   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1284   ROM_LOAD16_BYTE( "tm4knj_v6.03.u51", 0x000000, 0x100000, CRC(fcaf10d2) SHA1(67bf584223c4bb7436bd9a03eb799895ecd26a26) ) /* TOUCHMASTER 4000 U51 NEW JERSEY  6.03 (New Jersey 3-23-98) */
1285   ROM_LOAD16_BYTE( "tm4knj_v6.03.u52", 0x000001, 0x100000, CRC(bed6f9e9) SHA1(695509a2b47e1d70cdbad765f581605b31065b8c) ) /* TOUCHMASTER 4000 U52 NEW JERSEY  6.03 (New Jersey 3-23-98) */
1286
1287   ROM_REGION( 0x000022, "ds1204", 0 )
1288   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1289
1290   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1291   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1292   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1293   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1294   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1295   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1296   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1297
1298   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1299   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1300ROM_END
1301
1302ROM_START( tm4ka )
1303   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1304   ROM_LOAD16_BYTE( "tm4k_v6.02.u51", 0x000000, 0x100000, CRC(3d8d7848) SHA1(31638f23cdd5e6cfbb2270e953f84fe1bd437950) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.02 (Standard 4-14-98) */
1305   ROM_LOAD16_BYTE( "tm4k_v6.02.u52", 0x000001, 0x100000, CRC(6d412871) SHA1(ae27c7723b292daf6682c53bafac22e4a3cd1ece) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.02 (Standard 4-14-98) */
1306
1307   ROM_REGION( 0x000022, "ds1204", 0 )
1308   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1309
1310   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1311   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1312   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1313   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1314   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1315   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1316   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1317
1318   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1319   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1320ROM_END
1321
1322ROM_START( tm4kca ) /* California version only */
1323   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1324   ROM_LOAD16_BYTE( "tm4k_v6.02ca.u51", 0x000000, 0x100000, CRC(b355e15e) SHA1(e6a6cd74d3439f589ac0a914ec66962ce2885c00) ) /* TOUCHMASTER 4000 U51 CALIFORNIA  6.02 (CA. 4-14-98) */
1325   ROM_LOAD16_BYTE( "tm4k_v6.02ca.u52", 0x000001, 0x100000, CRC(0adbbfc0) SHA1(4660bd95649bfc65d3e52975d168de4963bd27cb) ) /* TOUCHMASTER 4000 U52 CALIFORNIA  6.02 (CA. 4-14-98) */
1326
1327   ROM_REGION( 0x000022, "ds1204", 0 )
1328   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1329
1330   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1331   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1332   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1333   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1334   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1335   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1336   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1337
1338   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1339   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1340ROM_END
1341
1342ROM_START( tm4kb )
1343   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1344   ROM_LOAD16_BYTE( "tm4k_v6.01.u51", 0x000000, 0x100000, CRC(cdcfd064) SHA1(51f022d25411d119a5f16ff7f09f4bed59b937e1) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.01 (Standard 3-23-98) */
1345   ROM_LOAD16_BYTE( "tm4k_v6.01.u52", 0x000001, 0x100000, CRC(e0bf71a9) SHA1(8f5e70dee60cd95aceac4707ff73bdff578a6139) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.01 (Standard 3-23-98) */
1346
1347   ROM_REGION( 0x000022, "ds1204", 0 )
1348   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1349
1350   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1351   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1352   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1353   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1354   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1355   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1356   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1357
1358   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1359   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1360ROM_END
1361
1362ROM_START( tm4kmn ) /* Minnesota only version */
1363   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1364   ROM_LOAD16_BYTE( "tm4kmn_v6.01.u51", 0x000000, 0x100000, CRC(66b7f936) SHA1(7d13b24440f15bc29587b35d32f8a34019cc2462) ) /* TOUCHMASTER 4000 U51 MINNESOTA  6.01 (MN. 3-30-98) */
1365   ROM_LOAD16_BYTE( "tm4kmn_v6.01.u52", 0x000001, 0x100000, CRC(34fa24bb) SHA1(4c4f706f8f09bfd1f81fbf71b377c0eb2cbfa97d) ) /* TOUCHMASTER 4000 U52 MINNESOTA  6.01 (MN. 3-30-98) */
1366
1367   ROM_REGION( 0x000022, "ds1204", 0 )
1368   ROM_LOAD( "a-21657-003", 0x000000, 0x000022, NO_DUMP )
1369
1370   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1371   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1372   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1373   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1374   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1375   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1376   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1377
1378   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1379   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1380ROM_END
1381
1382/***************************************************************************
1383
1384Touchmaster 5000
1385by Midway (c) 1998
1386touchscreen game
1387
1388All chips are ST M27C801 (some kits/upgrades used mask roms)
1389---------------------------
1390
1391Name Board Location        Version               Use                      Checksum
1392-----------------------------------------------------------------------------------
1393tm5k_v7_10.u51             7.10 Game Program & Cpu instructions 1A51
1394tm5k_v7_10.u52             7.10 Game Program & Cpu instructions 5A01
1395tm5k_graphic.u36           7.0  Video Images & Graphics         DB7F
1396tm5k_graphic.u37           7.0  Video Images & Graphics         871B
1397tm5k_graphic.u38           7.0  Video Images & Graphics         EDCE
1398tm5k_graphic.u39           7.0  Video Images & Graphics         657F
1399tm5k_graphic.u40           7.0  Video Images & Graphics         93E0
1400tm5k_graphic.u41           7.0  Video Images & Graphics         FCA5
1401tm5k_sound.u8              7.0  Audio Program & sounds          F474
1402
1403J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-004
1404-----------------------------------------------------------------------------------
1405
1406* EPROM versions are labeled with white labels
1407
1408***************************************************************************/
1409
1410ROM_START( tm5k )
1411   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1412   ROM_LOAD16_BYTE( "tm5k_v7.10.u51", 0x000000, 0x100000, CRC(df0bd25e) SHA1(db1a197ed4c868743397f3823f3f1d42b9329f80) ) /* TOUCHMASTER 5000 U51 DOMESTIC 7.10 (Standard 10-9-98) (tan label) */
1413   ROM_LOAD16_BYTE( "tm5k_v7.10.u52", 0x000001, 0x100000, CRC(ddf9e8dc) SHA1(3228f2eba067bdf1bd639116bffc589585ea3e72) ) /* TOUCHMASTER 5000 U52 DOMESTIC 7.10 (Standard 10-9-98) (tan label) */
1414
1415   ROM_REGION( 0x000022, "ds1204", 0 )
1416   ROM_LOAD( "a-21657-004", 0x000000, 0x000022, NO_DUMP )
1417
1418   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1419   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1420   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1421   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1422   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1423   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1424   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1425
1426   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1427   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1428ROM_END
1429
1430ROM_START( tm5kca ) /* California only version */
1431   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1432   ROM_LOAD16_BYTE( "tm5kca_v7.10.u51", 0x000000, 0x100000, CRC(7c03708f) SHA1(e1f8198bc03c1f9d2a00662b589fd66fdcc7a2de) ) /* TOUCHMASTER 5000 U51 CALIFORNIA 7.10 (CA. 10-9-98) (tan label) */
1433   ROM_LOAD16_BYTE( "tm5kca_v7.10.u52", 0x000001, 0x100000, CRC(f1413295) SHA1(ad6b57c590bdae063b0e4a1abcb3b13ee52cd6db) ) /* TOUCHMASTER 5000 U52 CALIFORNIA 7.10 (CA. 10-9-98) (tan label) */
1434
1435   ROM_REGION( 0x000022, "ds1204", 0 )
1436   ROM_LOAD( "a-21657-004", 0x000000, 0x000022, NO_DUMP )
1437
1438   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1439   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1440   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1441   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1442   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1443   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1444   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1445
1446   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1447   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1448ROM_END
1449
1450ROM_START( tm5kmn ) /* Minnesota only version */
1451   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1452   ROM_LOAD16_BYTE( "tm5kmn_v7.10.u51", 0x000000, 0x100000, CRC(eb12e430) SHA1(48de1d49025cd3fc844d0399d58efc630c51ab28) ) /* TOUCHMASTER 5000 U51 MINNESOTA 7.10 (MN. 10-9-98) (tan label) */
1453   ROM_LOAD16_BYTE( "tm5kmn_v7.10.u52", 0x000001, 0x100000, CRC(6a4e75d9) SHA1(b0049b5d5f649aedb568d71aacfcb648320dd53b) ) /* TOUCHMASTER 5000 U52 MINNESOTA 7.10 (MN. 10-9-98) (tan label) */
1454
1455   ROM_REGION( 0x000022, "ds1204", 0 )
1456   ROM_LOAD( "a-21657-004", 0x000000, 0x000022, NO_DUMP )
1457
1458   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1459   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1460   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1461   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1462   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1463   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1464   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1465
1466   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1467   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1468ROM_END
1469
1470ROM_START( tm5ka )
1471   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1472   ROM_LOAD16_BYTE( "tm5k_v7.01.u51", 0x000000, 0x100000, CRC(3ff68213) SHA1(ec4939899a69f56d2437c806fdd0a5b50e58ec6a) ) /* TOUCHMASTER 5000 U51 DOMESTIC 7.01 (Standard 8-21-98) (pink label) */
1473   ROM_LOAD16_BYTE( "tm5k_v7.01.u52", 0x000001, 0x100000, CRC(b3de607c) SHA1(4ede5b8c50177d1934a3b93d311a240ef354c450) ) /* TOUCHMASTER 5000 U52 DOMESTIC 7.01 (Standard 8-21-98) (pink label) */
1474
1475   ROM_REGION( 0x000022, "ds1204", 0 )
1476   ROM_LOAD( "a-21657-004", 0x000000, 0x000022, NO_DUMP )
1477
1478   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1479   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1480   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1481   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1482   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1483   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1484   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1485
1486   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1487   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1488ROM_END
1489
1490/***************************************************************************
1491
1492Touchmaster 7000
1493by Midway (c) 1999
1494touchscreen game
1495
1496All chips are ST M27C801 (some kits/upgrades used mask roms)
1497---------------------------
1498
1499Name Board Location        Version               Use                      Checksum
1500-----------------------------------------------------------------------------------
1501tm7k_v804.u51              8.04 Game Program & Cpu instructions 321B
1502tm7k_v804.u52              8.04 Game Program & Cpu instructions 2DED
1503
1504tm7k_v800.u51              8.00 Game Program & Cpu instructions 82A5
1505tm7k_v800.u52              8.00 Game Program & Cpu instructions 81E1
1506
1507tm7k_graphic.u36           8.0  Video Images & Graphics         DB7F (same as TM5K)
1508tm7k_graphic.u37           8.0  Video Images & Graphics         7461
1509tm7k_graphic.u38           8.0  Video Images & Graphics         EDCE (same as TM5K)
1510tm7k_graphic.u39           8.0  Video Images & Graphics         2BB6
1511tm7k_graphic.u40           8.0  Video Images & Graphics         B103
1512tm7k_graphic.u41           8.0  Video Images & Graphics         11CA
1513tm7k_sound.u8              8.0  Audio Program & sounds          F474 (same as TM5K)
1514
1515J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-005
1516-----------------------------------------------------------------------------------
1517
1518***************************************************************************/
1519
1520ROM_START( tm7k )
1521   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1522   ROM_LOAD16_BYTE( "tm7k_v8.04.u51", 0x000000, 0x100000, CRC(2461af04) SHA1(9cf37c04db0297ff8f9f316fd476d6d5d1c39acf) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */
1523   ROM_LOAD16_BYTE( "tm7k_v8.04.u52", 0x000001, 0x100000, CRC(5d39fad2) SHA1(85e8d110b88e1099117ab7963eaee47dc86ec7c5) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */
1524
1525   ROM_REGION( 0x000022, "ds1204", 0 )
1526   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1527
1528   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1529   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1530   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1531   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1532   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1533   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1534   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1535
1536   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1537   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1538ROM_END
1539
1540ROM_START( tm7knj ) /* New Jersey version only - ABC Exception No. 27 */
1541   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1542   ROM_LOAD16_BYTE( "tm7knj_v8.05.u51", 0x000000, 0x100000, CRC(46a7ed33) SHA1(e9ceb5005a6e88bd179fca0b62477cea19b82443) ) /* TOUCHMASTER 7000 U51 NEW JERSEY 8.05 (Standard 07/22/99) (orange label) */
1543   ROM_LOAD16_BYTE( "tm7knj_v8.05.u52", 0x000001, 0x100000, CRC(127e8b09) SHA1(017d4cda6205f88256cbecabf0c94e71eef93bf9) ) /* TOUCHMASTER 7000 U52 NEW JERSEY 8.05 (Standard 07/22/99) (orange label) */
1544
1545   ROM_REGION( 0x000022, "ds1204", 0 )
1546   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1547
1548   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1549   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1550   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1551   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1552   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1553   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1554   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1555
1556   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1557   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1558ROM_END
1559
1560ROM_START( tm7kmn ) /* Minnesota only version */
1561   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1562   ROM_LOAD16_BYTE( "tm7kmn_v8.04.u51", 0x000000, 0x100000, CRC(c85b5adc) SHA1(418776917c1f419fd981deaab9754f4f03a2288f) ) /* TOUCHMASTER 7000 U51 MINNESOTA 8.04 (MN. 06/02/99) (orange label) */
1563   ROM_LOAD16_BYTE( "tm7kmn_v8.04.u52", 0x000001, 0x100000, CRC(542bc209) SHA1(b8314d695a36380f6be02b45eac83cfab857c258) ) /* TOUCHMASTER 7000 U52 MINNESOTA 8.04 (MN. 06/02/99) (orange label) */
1564
1565   ROM_REGION( 0x000022, "ds1204", 0 )
1566   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1567
1568   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1569   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1570   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1571   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1572   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1573   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1574   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1575
1576   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1577   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1578ROM_END
1579
1580ROM_START( tm7ka )
1581   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1582   ROM_LOAD16_BYTE( "tm7k_v8.00.u51", 0x000000, 0x100000, CRC(83ec3da7) SHA1(37fa7183e7acc2eab35ac431d99cbbfe4862979e) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */
1583   ROM_LOAD16_BYTE( "tm7k_v8.00.u52", 0x000001, 0x100000, CRC(e2004282) SHA1(aa73029f31e2062cabedfcd778db97b314624ae8) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */
1584
1585   ROM_REGION( 0x000022, "ds1204", 0 )
1586   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1587
1588   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1589   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Labeled GRAPHIC U38  8.0 (orange label) */
1590   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Labeled GRAPHIC U36  8.0 (orange label) */
1591   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Labeled GRAPHIC U39  8.0 (orange label) */
1592   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Labeled GRAPHIC U37  8.0 (orange label) */
1593   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Labeled GRAPHIC U41  8.0 (orange label) */
1594   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Labeled GRAPHIC U40  8.0 (orange label) */
1595
1596   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1597   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Labeled SOUND U8  8.0 (orange label) */
1598ROM_END
1599
1600ROM_START( tm7kmna ) /* Minnesota only version */
1601   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1602   ROM_LOAD16_BYTE( "tm7kmn_v8.00.u51", 0x000000, 0x100000, CRC(4bc423e9) SHA1(c9ba044b4bc8431281e174cddc8697324cbbf072) ) /* TOUCHMASTER 7000 U51 MINNESOTA 8.00 (MN. 03/26/99) (orange label) */
1603   ROM_LOAD16_BYTE( "tm7kmn_v8.00.u52", 0x000001, 0x100000, CRC(51968948) SHA1(f8b63df4480cafa453f970fb07f73103d39e2903) ) /* TOUCHMASTER 7000 U52 MINNESOTA 8.00 (MN. 03/26/99) (orange label) */
1604
1605   ROM_REGION( 0x000022, "ds1204", 0 )
1606   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1607
1608   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1609   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1610   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1611   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1612   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1613   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1614   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1615
1616   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1617   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1618ROM_END
1619
1620ROM_START( tm7keval ) /* FREEPLAY ONLY / NOT FOR RELEASE / FOR EVALUATION ONLY */
1621   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1622   ROM_LOAD16_BYTE( "tm7k_v8.1x.u51", 0x000000, 0x100000, CRC(57c88287) SHA1(1008bbcd137ede321be4cc2ad22e3982d880471b) ) /* TOUCHMASTER 7000 U51 8.1X (ASI Standard 03/08/99) (white label) */
1623   ROM_LOAD16_BYTE( "tm7k_v8.1x.u52", 0x000001, 0x100000, CRC(e45d69bb) SHA1(9e8a42924a9cd573cbd2f3164d0fb468eee7ff51) ) /* TOUCHMASTER 7000 U52 8.1X (ASI Standard 03/08/99) (white label) */
1624
1625   ROM_REGION( 0x000022, "ds1204", 0 )
1626   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, NO_DUMP )
1627
1628   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1629   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* TOUCHMASTER EDCE V8.X U38 (white label) */
1630   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* TOUCHMASTER DB7F V8.X U36 (white label) */
1631   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* TOUCHMASTER 2BB6 V8.X U39 (white label) */
1632   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* TOUCHMASTER 7461 V8.X U37 (white label) */
1633   ROM_LOAD16_BYTE( "tm7k_v8x.u41",     0x400000, 0x100000, CRC(d15757f0) SHA1(d09a83dc00812a4208d5684e8cfba1f5d1e3f097) ) /* TOUCHMASTER 335E V8.X U41 (white label) */
1634   ROM_LOAD16_BYTE( "tm7k_v8x.u40",     0x400001, 0x100000, CRC(d3596f63) SHA1(a2474bc1a73b5782f8169b0529a535269ea82440) ) /* TOUCHMASTER 7987 V8.X U40 (white label) */
1635
1636   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1637   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Labeled SOUND U8  8.0 (orange label) */
1638ROM_END
1639
1640/***************************************************************************
1641
1642Touchmaster 8000
1643by Midway (c) 2000
1644touchscreen game
1645
1646All chips are ST M27C801 (some kits/upgrades used mask roms)
1647---------------------------
1648
1649Name Board Location        Version               Use                      Checksum
1650-----------------------------------------------------------------------------------
1651tm8k_v904.u51              9.04 Game Program & Cpu instructions D40F
1652tm8k_v904.u52              9.04 Game Program & Cpu instructions 53B2
1653
1654tm8k_graphic.u36           9.0  Video Images & Graphics         AD8D
1655tm8k_graphic.u37           9.0  Video Images & Graphics         AF83
1656tm8k_graphic.u38           9.0  Video Images & Graphics         6BCF
1657tm8k_graphic.u39           9.0  Video Images & Graphics         C8A6
1658tm8k_graphic.u40           9.0  Video Images & Graphics         B8C7
1659tm8k_graphic.u41           9.0  Video Images & Graphics         EF93
1660tm8k_sound.u8              9.0  Audio Program & sounds          F474 (same as TM5K & TM7K)
1661
1662J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-007
1663-----------------------------------------------------------------------------------
1664
1665***************************************************************************/
1666
1667/* According to the Distributor notice from Midway, the only thing updated for v9.04 was the "Power Cell" game to 'improve the performance'. */
1668ROM_START( tm8k )
1669   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1670   ROM_LOAD16_BYTE( "tm8k_v9.04.u51", 0x000000, 0x100000, CRC(28864ec8) SHA1(e703f9ee350dd915102e784bbd04445a95b7d0a5) ) /* TOUCHMASTER 8000 U51 DOMESTIC 9.04 (Standard 04/25/00) */
1671   ROM_LOAD16_BYTE( "tm8k_v9.04.u52", 0x000001, 0x100000, CRC(c123eec2) SHA1(3e9c84755b18a4fd900068f385ee47107771391d) ) /* TOUCHMASTER 8000 U52 DOMESTIC 9.04 (Standard 04/25/00) */
1672
1673   ROM_REGION( 0x000022, "ds1204", 0 )
1674   ROM_LOAD( "a-21657-007", 0x000000, 0x000022, NO_DUMP )
1675
1676   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1677   ROM_LOAD16_BYTE( "tm8k_graphic.u38", 0x000000, 0x100000, CRC(2a971d46) SHA1(6ca4067e9fa40053df415e670b2e853915319dbb) ) /* Mask rom labeled 5341-16513-07 U38 VIDEO IMAGE */
1678   ROM_LOAD16_BYTE( "tm8k_graphic.u36", 0x000001, 0x100000, CRC(3bde285e) SHA1(87bf60034665542fb0240b7479adfffb7ba9fad7) ) /* Mask rom labeled 5341-16513-06 U36 VIDEO IMAGE */
1679   ROM_LOAD16_BYTE( "tm8k_graphic.u39", 0x200000, 0x100000, CRC(58c6c1d8) SHA1(cc11863c4ea46bde7ea4775075f4328be6d6c6d1) ) /* Mask rom labeled 5341-16513-05 U39 VIDEO IMAGE */
1680   ROM_LOAD16_BYTE( "tm8k_graphic.u37", 0x200001, 0x100000, CRC(c0992f7a) SHA1(e4e1ef2414f2f0a784c775f39123122c08950403) ) /* Mask rom labeled 5341-16513-04 U37 VIDEO IMAGE */
1681   ROM_LOAD16_BYTE( "tm8k_graphic.u41", 0x400000, 0x100000, CRC(d8bdb82e) SHA1(9bdee261591ccff8a57c5454644f84f8992f614f) ) /* Mask rom labeled 5341-16513-09 U41 VIDEO IMAGE */
1682   ROM_LOAD16_BYTE( "tm8k_graphic.u40", 0x400001, 0x100000, CRC(0c3d6347) SHA1(7ef19018c180abf412a8ff9f278b00c2b4321cc2) ) /* Mask rom labeled 5341-16513-08 U40 VIDEO IMAGE */
1683
1684   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1685   ROM_LOAD( "tm8k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16513-03 U8 SOUND */
1686ROM_END
1687
1688ROM_START( tm8k902 )
1689   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1690   ROM_LOAD16_BYTE( "tm8k_v9.02.u51", 0x000000, 0x100000, CRC(c0d95b2c) SHA1(2240d969047ada856ec2fac6cdf72db722753a6d) ) /* TOUCHMASTER 8000 U51 DOMESTIC 9.02 (Standard 03/17/00) */
1691   ROM_LOAD16_BYTE( "tm8k_v9.02.u52", 0x000001, 0x100000, CRC(5194c1b5) SHA1(28a91d12a022927bfe96afd62b30b268c0ced3ea) ) /* TOUCHMASTER 8000 U52 DOMESTIC 9.02 (Standard 03/17/00) */
1692
1693   ROM_REGION( 0x000022, "ds1204", 0 )
1694   ROM_LOAD( "a-21657-007", 0x000000, 0x000022, NO_DUMP )
1695
1696   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1697   ROM_LOAD16_BYTE( "tm8k_graphic.u38", 0x000000, 0x100000, CRC(2a971d46) SHA1(6ca4067e9fa40053df415e670b2e853915319dbb) ) /* Mask rom labeled 5341-16513-07 U38 VIDEO IMAGE */
1698   ROM_LOAD16_BYTE( "tm8k_graphic.u36", 0x000001, 0x100000, CRC(3bde285e) SHA1(87bf60034665542fb0240b7479adfffb7ba9fad7) ) /* Mask rom labeled 5341-16513-06 U36 VIDEO IMAGE */
1699   ROM_LOAD16_BYTE( "tm8k_graphic.u39", 0x200000, 0x100000, CRC(58c6c1d8) SHA1(cc11863c4ea46bde7ea4775075f4328be6d6c6d1) ) /* Mask rom labeled 5341-16513-05 U39 VIDEO IMAGE */
1700   ROM_LOAD16_BYTE( "tm8k_graphic.u37", 0x200001, 0x100000, CRC(c0992f7a) SHA1(e4e1ef2414f2f0a784c775f39123122c08950403) ) /* Mask rom labeled 5341-16513-04 U37 VIDEO IMAGE */
1701   ROM_LOAD16_BYTE( "tm8k_graphic.u41", 0x400000, 0x100000, CRC(d8bdb82e) SHA1(9bdee261591ccff8a57c5454644f84f8992f614f) ) /* Mask rom labeled 5341-16513-09 U41 VIDEO IMAGE */
1702   ROM_LOAD16_BYTE( "tm8k_graphic.u40", 0x400001, 0x100000, CRC(0c3d6347) SHA1(7ef19018c180abf412a8ff9f278b00c2b4321cc2) ) /* Mask rom labeled 5341-16513-08 U40 VIDEO IMAGE */
1703
1704   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1705   ROM_LOAD( "tm8k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16513-03 U8 SOUND */
1706ROM_END
1707
1708/***************************************************************************
1709
1710Galaxy Games BIOS v. 1.90
1711
1712This is a multi-game cocktail cabinet released in 1998.  Namco seems to have
1713made some cartridges for it (or at least licensed their IP).
1714
1715Trackball-based. 'BIOS' has 7 built-in games. There are two LEDs on the PCB.
1716
1717More information here : http://www.cesgames.com/museum/galaxy/index.html
1718
1719----
1720
1721Board silkscreened  237-0211-00
1722                    REV.-D
1723
1724Cartridge based mother board
1725Holds up to 4 cartridges
1726Chips labeled
1727    GALAXY U1 V1.90 12/1/98
1728    GALAXY U2 V1.90 12/1/98
1729
1730Motorola MC68HC000FN12
173124 MHz oscillator
1732Xilinx XC5206
1733Xilinx XC5202
1734BT481AKPJ110 (Palette RAMDAC)
1735NKK N341024SJ-15    x8  (128kB RAM)
1736OKI M6295 8092352-2
1737
1738PAL16V8H-15 @ U24   Blue dot on it
1739PAL16V8H-15 @ U25   Yellow dot on it
1740PAL16V8H-15 @ U26   Red dot on it
1741PAL16V8H-15 @ U27   Green dot on it
1742PAL16V8H-15 @ U45   red dot on it
1743
1744***************************************************************************/
1745
1746#define GALGAMES_BIOS_ROMS \
1747   ROM_SYSTEM_BIOS( 0, "0",   "v1.90" ) \
1748   ROMX_LOAD( "galaxy.u2", 0x000000, 0x100000, CRC(e51ff184) SHA1(aaa795f2c15ec29b3ceeb5c917b643db0dbb7083), ROM_SKIP(1) | ROM_BIOS(1) ) \
1749   ROMX_LOAD( "galaxy.u1", 0x000001, 0x100000, CRC(c6d7bc6d) SHA1(93c032f9aa38cbbdda59a8a25ff9f38f7ad9c760), ROM_SKIP(1) | ROM_BIOS(1) )
1750
1751#define GALGAMES_MB_PALS \
1752   ROM_REGION( 0xa00, "pals", 0) \
1753   ROM_LOAD( "16v8h-blue.u24",    0x000, 0x117, NO_DUMP ) \
1754   ROM_LOAD( "16v8h-yellow.u25",  0x200, 0x117, NO_DUMP ) \
1755   ROM_LOAD( "16v8h-magenta.u26", 0x400, 0x117, NO_DUMP ) \
1756   ROM_LOAD( "16v8h-green.u27",   0x600, 0x117, NO_DUMP ) \
1757   ROM_LOAD( "16v8h-red.u45",     0x800, 0x117, NO_DUMP )
1758
1759ROM_START( galgbios )
1760   ROM_REGION( 0x200000, "maincpu", 0 )
1761   GALGAMES_BIOS_ROMS
1762
1763   ROM_REGION( 0x200000, "blitter", 0 )
1764   ROM_COPY( "maincpu", 0, 0, 0x200000 )
1765
1766   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
1767   // RAM, filled by the 68000 and fed to the OKI
1768
1769   GALGAMES_MB_PALS
1770ROM_END
1771
1772/***************************************************************************
1773
1774Galaxy Games StarPak 2
1775
1776NAMCO 307 Cartridge, has surface mount Flash chips in it:
1777
1778.u1 am29f800BB
1779.u2 am29f800BB
1780.u4 pic 12c508
1781
1782Board silkscreened  237-0209-00
1783                    REV.-C
1784
1785***************************************************************************/
1786
1787ROM_START( galgame2 )
1788   ROM_REGION( 0x200000 * 2, "maincpu", 0 )
1789   GALGAMES_BIOS_ROMS
1790   ROM_LOAD16_BYTE( "namco.u2",  0x200000, 0x100000, CRC(f43c0c54) SHA1(4a13946c3d173b0e4ab25b01849574fa3302b417) )
1791   ROM_LOAD16_BYTE( "namco.u1",  0x200001, 0x100000, CRC(b8c34a8b) SHA1(40d3b35f573d2bd2ae1c7d876c55fc436864fa3f) )
1792
1793   ROM_REGION( 0x9db, "pic", 0 )
1794   ROM_LOAD( "namco.u4", 0x000, 0x9db, CRC(63ec1224) SHA1(2966b2aa431e6b8d46cbba18a6fc4de7395caa04) )
1795
1796   ROM_REGION( 0x200000 * 2, "blitter", 0 )
1797   ROM_COPY( "maincpu", 0, 0, 0x200000 * 2 )
1798
1799   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
1800   // RAM, filled by the 68000 and fed to the OKI
1801
1802   GALGAMES_MB_PALS
1803ROM_END
1804
1805
1806DRIVER_INIT_MEMBER(tmaster_state,tm4k)
1807{
1808#if PATCH_PROTECTION
1809   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1810
1811   // protection
1812   ROM[0x834ce/2] = 0x4e75;
1813
1814   ROM[0x8349c/2] = 0x6002;
1815   ROM[0x834c4/2] = 0x6002;
1816#endif
1817/*
1818
1819Protection resembles that of tm5k rather than tm4ka:
1820
1821 83470: addi.w  #$384, D0       0640 0384
1822 83474: move.w  D0, $207a86.l   33C0 0020 7A86
1823
1824*/
1825
1826}
1827
1828
1829DRIVER_INIT_MEMBER(tmaster_state,tm4ka)
1830{
1831#if PATCH_PROTECTION
1832   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1833
1834   // protection
1835   ROM[0x83476/2] = 0x4e75;
1836
1837   ROM[0x8342C/2] = 0x601a;
1838   ROM[0x8346C/2] = 0x6002;
1839#endif
1840/*
1841Protection starts:
1842
1843 8341C: addi.w  #$384, D0       0640 0384
1844 83420: move.w  D0, $207a86.l   33C0 0020 7A86
1845 83426: btst    #$7, ($1,A5)    082D 0007 0001
1846 8342C: beq     $83448          671A           <-- First patch goes here
1847
1848*/
1849
1850}
1851
1852
1853DRIVER_INIT_MEMBER(tmaster_state,tm4kca)
1854{
1855#if PATCH_PROTECTION
1856   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1857
1858   // protection
1859   ROM[0x83470/2] = 0x4e75;
1860
1861   ROM[0x83426/2] = 0x601a;
1862   ROM[0x83466/2] = 0x6002;
1863#endif
1864/*
1865Protection starts:
1866
1867 83416: addi.w  #$384, D0       0640 0384
1868 8341a: move.w  D0, $207a86.l   33C0 0020 7A86
1869 83420: btst    #$7, ($1,A5)    082D 0007 0001
1870 83426: beq     $83448          671A           <-- First patch goes here
1871
1872*/
1873
1874}
1875
1876
1877DRIVER_INIT_MEMBER(tmaster_state,tm4knj)
1878{
1879#if PATCH_PROTECTION
1880   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1881
1882   // protection
1883   ROM[0x7f9d8/2] = 0x4e75;
1884
1885   ROM[0x7f9a6/2] = 0x6002;
1886   ROM[0x7f9ce/2] = 0x6002;
1887#endif
1888}
1889
1890
1891DRIVER_INIT_MEMBER(tmaster_state,tm4kmn)
1892{
1893#if PATCH_PROTECTION
1894   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1895
1896   // protection
1897   ROM[0x7152e/2] = 0x4e75;
1898
1899   ROM[0x714e4/2] = 0x601a;
1900   ROM[0x71524/2] = 0x6002;
1901#endif
1902}
1903
1904
1905DRIVER_INIT_MEMBER(tmaster_state,tm4kb)
1906{
1907#if PATCH_PROTECTION
1908   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1909
1910   // protection
1911   ROM[0x82b7a/2] = 0x4e75;
1912
1913   ROM[0x82b30/2] = 0x601a;
1914   ROM[0x82b70/2] = 0x6002;
1915#endif
1916/*
1917Protection starts:
1918
1919 82B20: addi.w  #$384, D0       0640 0384
1920 82B24: move.w  D0, $207a84.l   33C0 0020 7A84
1921 82B2A: btst    #$7, ($1,A5)    082D 0007 0001
1922 82B30: beq     $83448          671A           <-- First patch goes here
1923
1924*/
1925
1926}
1927
1928DRIVER_INIT_MEMBER(tmaster_state,tm5k)
1929{
1930#if PATCH_PROTECTION
1931   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1932
1933   // protection
1934   ROM[0x96002/2] = 0x4e75;
1935
1936   ROM[0x95fd0/2] = 0x6002;
1937   ROM[0x95ff8/2] = 0x6002;
1938#endif
1939/*
1940Protection starts:
1941
1942 95FBE: addi.w  #$384, D0       0640 0384
1943 95FC2: move.w  D0, $207e9a.l   33C0 0020 7E9A
1944 95FC8: moveq   #$f, D0         700F
1945 95FCA: and.w   (A4), D0        C054
1946 95FCC: cmpi.w  #$3, D0         0C40 0003
1947 95FD0: bcs     $95fd4          6502          <-- First patch goes here
1948
1949*/
1950
1951}
1952
1953DRIVER_INIT_MEMBER(tmaster_state,tm5kmn)
1954{
1955#if PATCH_PROTECTION
1956   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1957
1958   // protection
1959   ROM[0x841b4/2] = 0x4e75;
1960
1961   ROM[0x84182/2] = 0x6002;
1962   ROM[0x841aa/2] = 0x6002;
1963#endif
1964}
1965
1966DRIVER_INIT_MEMBER(tmaster_state,tm5kca)
1967{
1968#if PATCH_PROTECTION
1969   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1970
1971   // protection
1972   ROM[0x95ffe/2] = 0x4e75;
1973
1974   ROM[0x95fcc/2] = 0x6002;
1975   ROM[0x95ff4/2] = 0x6002;
1976#endif
1977}
1978
1979DRIVER_INIT_MEMBER(tmaster_state,tm5ka)
1980{
1981#if PATCH_PROTECTION
1982   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1983
1984   // protection
1985   ROM[0x96b30/2] = 0x4e75;
1986
1987   ROM[0x96ae6/2] = 0x601a;
1988   ROM[0x96b26/2] = 0x6002;
1989#endif
1990/*
1991Protection starts:
1992
1993 96AD6: addi.w  #$384, D0       0640 0384
1994 96ADA: move.w  D0, $207cb4.l   33C0 0020 7CB4
1995 96AE0: btst    #$7, ($1,A5)    082D 0007 0001
1996 96AE6: beq     $96b02          671A           <-- First patch goes here
1997
1998*/
1999
2000}
2001
2002DRIVER_INIT_MEMBER(tmaster_state,tm7k)
2003{
2004#if PATCH_PROTECTION
2005   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2006
2007   // protection
2008   ROM[0x81730/2] = 0x4e75;
2009
2010   ROM[0x81700/2] = 0x6004;
2011   ROM[0x81728/2] = 0x6002;
2012#endif
2013/*
2014Protection starts:
2015
2016 816ee: addi.w  #$76c, D0       0640 076C
2017 816f2: move.w  D0, $20718c.l   33C0 0020 718C
2018 816f8: moveq   #$f, D0         700F
2019 816fa: and.w   (A4), D0        C054
2020 816fc: cmpi.w  #$3, D0         0C40 0003
2021 81700: bcs     $81706          6504          <-- First patch goes here
2022
2023*/
2024
2025}
2026
2027DRIVER_INIT_MEMBER(tmaster_state,tm7knj)
2028{
2029#if PATCH_PROTECTION
2030   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2031
2032   // protection
2033   ROM[0x7ddd0/2] = 0x4e75;
2034
2035   ROM[0x7dda0/2] = 0x6004;
2036   ROM[0x7ddc8/2] = 0x6002;
2037#endif
2038}
2039
2040DRIVER_INIT_MEMBER(tmaster_state,tm7kmn)
2041{
2042#if PATCH_PROTECTION
2043   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2044
2045   // protection
2046   ROM[0x6fd2a/2] = 0x4e75;
2047
2048   ROM[0x6fcfa/2] = 0x6004;
2049   ROM[0x6fd22/2] = 0x6002;
2050#endif
2051}
2052
2053DRIVER_INIT_MEMBER(tmaster_state,tm7kmna)
2054{
2055#if PATCH_PROTECTION
2056   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2057
2058   // protection
2059   ROM[0x6fb8e/2] = 0x4e75;
2060
2061   ROM[0x6fb5e/2] = 0x6004;
2062   ROM[0x6fb86/2] = 0x6002;
2063#endif
2064}
2065
2066
2067DRIVER_INIT_MEMBER(tmaster_state,tm7ka)
2068{
2069#if PATCH_PROTECTION
2070   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2071
2072   // protection
2073   ROM[0x81594/2] = 0x4e75;
2074
2075   ROM[0x81564/2] = 0x6004;
2076   ROM[0x8158c/2] = 0x6002;
2077#endif
2078/*
2079Protection starts:
2080
2081 81552: addi.w  #$76c, D0       0640 076C
2082 81556: move.w  D0, $207104.l   33C0 0020 7104
2083 8155C: moveq   #$f, D0         700F
2084 8155E: and.w   (A4), D0        C054
2085 81560: cmpi.w  #$3, D0         0C40 0003
2086 81564: bcs     $8156A          6504          <-- First patch goes here
2087
2088*/
2089
2090}
2091
2092DRIVER_INIT_MEMBER(tmaster_state,tm7keval)
2093{
2094#if PATCH_PROTECTION
2095   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2096
2097   // protection
2098   ROM[0x8949e/2] = 0x4e75;
2099
2100   ROM[0x8946c/2] = 0x6002;
2101   ROM[0x89494/2] = 0x6002;
2102#endif
2103/*
2104Protection starts:
2105
2106 8945A: addi.w  #$384, D0       0640 0384
2107 8945E: move.w  D0, $2074E4.l   33C0 0020 74E4
2108 89464: moveq   #$f, D0         700F
2109 89466: and.w   (A4), D0        C054
2110 89468: cmpi.w  #$3, D0         0C40 0003
2111 8946C: bcs     $89470          6502          <-- First patch goes here
2112
2113*/
2114
2115}
2116
2117DRIVER_INIT_MEMBER(tmaster_state,tm8k)
2118{
2119#if PATCH_PROTECTION
2120   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2121
2122   // protection
2123   ROM[0x78b70/2] = 0x4e75;
2124
2125   ROM[0x78b40/2] = 0x6004;
2126   ROM[0x78b68/2] = 0x6002;
2127#endif
2128/*
2129Protection starts:
2130
2131 78B2E: addi.w  #$76c, D0       0640 076C
2132 78B32: move.w  D0, $206FC2.l   33C0 0020 6FC2
2133 78B38: moveq   #$f, D0         700F
2134 78B3A: and.w   (A4), D0        C054
2135 78B3C: cmpi.w  #$3, D0         0C40 0003
2136 78B40: bcs     $78B46          6504          <-- First patch goes here
2137
2138*/
2139
2140}
2141
2142DRIVER_INIT_MEMBER(tmaster_state,galgames)
2143{
2144   UINT8 *ROM  =   memregion("maincpu")->base();
2145   int cart;
2146
2147   // RAM bank at 0x000000-0x03ffff and 0x200000-0x23ffff
2148   // ROM bank at 0x000000-0x1fffff and 0x200000-0x3fffff (bios)
2149
2150   membank(GALGAMES_BANK_000000_R)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
2151   membank(GALGAMES_BANK_000000_R)->configure_entry(GALGAMES_ROM0, ROM+0x000000);
2152
2153   membank(GALGAMES_BANK_000000_W)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
2154
2155   membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
2156   membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_ROM0, ROM+0x000000);
2157
2158   membank(GALGAMES_BANK_200000_W)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
2159
2160   membank(GALGAMES_BANK_240000_R)->configure_entry(GALGAMES_ROM0, ROM+0x040000);
2161
2162   // More ROM banks at 0x200000-0x3fffff (carts)
2163
2164   for (cart = 1; cart <= 4; cart++)
2165   {
2166      UINT8 *CART = memregion("maincpu")->base();
2167
2168      if  (0x200000 * (cart+1) <= memregion("maincpu")->bytes())
2169         CART += 0x200000 * cart;
2170
2171      membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_ROM0+cart, CART);
2172      membank(GALGAMES_BANK_240000_R)->configure_entry(GALGAMES_ROM0+cart, CART+0x040000);
2173   }
2174}
2175
2176DRIVER_INIT_MEMBER(tmaster_state,galgame2)
2177{
2178   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
2179
2180   // Patch BIOS to see the game code as first cartridge (until the PIC therein is emulated)
2181   ROM[0x118da/2] = 0x4a06;
2182   ROM[0x118dc/2] = 0x6704;
2183   ROM[0x118de/2] = 0x7000;
2184   ROM[0x118e0/2] = 0x6002;
2185   ROM[0x118e2/2] = 0x7001;
2186   ROM[0x118e4/2] = 0x4e71;
2187   ROM[0x118e6/2] = 0x4e71;
2188   ROM[0x118e8/2] = 0x4e71;
2189
2190   // Cartdridge check on game selection screen
2191   ROM[0x12da0/2] = 0x4e71;
2192
2193   DRIVER_INIT_CALL(galgames);
2194}
2195
2196GAME( 1996, tm,       0,        tm,       tm,       driver_device, 0,        ROT0, "Midway Games Inc. / CES Inc.",            "Touchmaster (v3.00 Euro)",               0 )
2197GAME( 1996, tmdo,     tm,       tm,       tm,       driver_device, 0,        ROT0, "Midway Games Inc. / CES Inc.",            "Touchmaster (v2.2-01 Standard)",         0 )
2198GAME( 1996, tm2k,     0,        tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 Plus (v4.63 Standard)", 0 )
2199GAME( 1996, tm2ka,    tm2k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 (v4.02 Standard)",      0 )
2200GAME( 1996, tm2kb,    tm2k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 (v4.00 Standard)",      0 )
2201GAME( 1997, tm3k,     0,        tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 3000 (v5.02 Standard)",      0 )
2202GAME( 1997, tm3ka,    tm3k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 3000 (v5.01 Standard)",      0 )
2203GAME( 1998, tm4k,     0,        tm4k,     tm4k,     tmaster_state, tm4k,     ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.03 Standard)",      0 )
2204GAME( 1998, tm4knj,   tm4k,     tm4k,     tm4k,     tmaster_state, tm4knj,   ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.03 New Jersey)",    0 )
2205GAME( 1998, tm4ka,    tm4k,     tm4k,     tm4k,     tmaster_state, tm4ka,    ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.02 Standard)",      0 )
2206GAME( 1998, tm4kca,   tm4k,     tm4k,     tm4k,     tmaster_state, tm4kca,   ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.02 California)",    0 )
2207GAME( 1998, tm4kb,    tm4k,     tm4k,     tm4k,     tmaster_state, tm4kb,    ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.01 Standard)",      0 )
2208GAME( 1998, tm4kmn,   tm4k,     tm4k,     tm4k,     tmaster_state, tm4kmn,   ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.01 Minnesota)",     0 )
2209GAME( 1998, tm5k,     0,        tm4k,     tm4k,     tmaster_state, tm5k,     ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 Standard)",      0 )
2210GAME( 1998, tm5kca,   tm5k,     tm4k,     tm4k,     tmaster_state, tm5kca,   ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 California)",    0 )
2211GAME( 1998, tm5kmn,   tm5k,     tm4k,     tm4k,     tmaster_state, tm5kmn,   ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 Minnesota)",     0 )
2212GAME( 1998, tm5ka,    tm5k,     tm4k,     tm4k,     tmaster_state, tm5ka,    ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.01 Standard)",      0 )
2213GAME( 1999, tm7k,     0,        tm4k,     tm4k,     tmaster_state, tm7k,     ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.04 Standard)",      0 )
2214GAME( 1999, tm7knj,   tm7k,     tm4k,     tm4k,     tmaster_state, tm7knj,   ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.05 New Jersey)",    0 )
2215GAME( 1999, tm7kmn,   tm7k,     tm4k,     tm4k,     tmaster_state, tm7kmn,   ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.04 Minnesota)",     0 )
2216GAME( 1999, tm7ka,    tm7k,     tm4k,     tm4k,     tmaster_state, tm7ka,    ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.00 Standard)",      0 )
2217GAME( 1999, tm7kmna,  tm7k,     tm4k,     tm4k,     tmaster_state, tm7kmna,  ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.00 Minnesota)",     0 )
2218GAME( 1999, tm7keval, tm7k,     tm4k,     tm4k,     tmaster_state, tm7keval, ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.1X Evaluation)",    0 )
2219GAME( 2000, tm8k,     0,        tm4k,     tm4k,     tmaster_state, tm8k,     ROT0, "Midway Games Inc.",                       "Touchmaster 8000 (v9.04 Standard)",      0 )
2220GAME( 2000, tm8k902,  tm8k,     tm4k,     tm4k,     tmaster_state, tm8k,     ROT0, "Midway Games Inc.",                       "Touchmaster 8000 (v9.02 Standard)",      0 )
2221GAME( 1998, galgbios, 0,        galgames, galgames, tmaster_state, galgames, ROT0, "Creative Electronics & Software",         "Galaxy Games (BIOS v1.90)",              GAME_IS_BIOS_ROOT )
2222GAME( 1998, galgame2, galgbios, galgame2, galgames, tmaster_state, galgame2, ROT0, "Creative Electronics & Software / Namco", "Galaxy Games StarPak 2",                 0 )
1/***************************************************************************
2 
3                      -= Touch Master / Galaxy Games =-
4 
5         driver by Luca Elia (l.elia@tin.it) and Mariusz Wojcieszek
6 
7 
8CPU:    68000
9Video:  Blitter, double framebuffer
10Sound:  OKI6295
11 
12[Touch Master]
13 
14Input:  Microtouch touch screen
15Other:  Dallas NVRAM + optional RTC
16 
17To Do:
18 - Coin optics
19 - Correct sound banking
20 - Proper protection emulation in tm4k and later games
21 - Find cause and fix hang in Solitaire Erotic (all Touchmaster version hang in this game)
22 
23To be dumped and added:
24 
25Touch Master 6000 <-- There doesn't seem to be a "6000" version
26Touch Master 7000 *
27Touch Master 8000 *
28 
29* There are alternate region/state version with modifications due to legal issues
30  Touch Master (current set) is a Euro version, all other sets are "DOMESTIC" (AKA "Standard").
31  Is there a Touch Master 6000?  TM5K is version 7.10, then TM7K is version 8, TM8K is version 9.xx
32 
33- There are known regional versions like California, Minnesota and likely others.  The difference
34  between regional sets are not known at this time.
35 
36- Starting with Touch Master 2000, each later version is a chipswap for the mainboard.
37   IE: Touch Master 8000 chips can update any Touch Master mainboard 2000 through 7000
38  Each version (IE: 2000, 3000, 7000 ect) has different girls for Strip Poker ;-)
39 
40Touch Master 8000 part lists (from service bulletin):
41 
42A-5343-60194-3  U8  Sound
43A-5343-60194-2  U51 Program code
44A-5343-60194-1  U52 Program code
45A-5343-60194-6  U36 Graphics
46A-5343-60194-4  U37 Graphics
47A-5343-60194-7  U38 Graphics
48A-5343-60194-5  U39 Graphics
49A-5343-60194-8  U40 Graphics
50A-5343-60194-9  U41 Graphics
51A-21657-007     Security Key
52 
53The above set is an undumped alternate set, maybe a Euro or special version.
54 
55+---------------------------------------------------------------+
56|  W24257AK                          GRAPHICS.U37  GRAPHICS.U39 |
57|             SECURITY.J12                                      |
58| PROGRAM.U52          DS1232        GRAPHICS.U36  GRAPHICS.U38 |
59|                                                               |
60|  W24257AK                          GRAPHICS.U40  GRAPHICS.U41 |
61|               68HC000FN12                                     |
62| PROGRAM.U51                                                   |
63|                                                               |
64|  DS1225AB.U62                      XC3042A     W241024AJ (x2) |
65|                                                               |
66|   3.664MHZ  24MHz                              W241024AJ (x2) |
67| SCN68681       CY7C128A       SOUND.U8    32MHz               |
68|     LED2 LED1  CY7C128A                                       |
69|    U62                              M6295                     |
70-                                                               |
71 |Serial Port              LED3                               J8|
72-                                                            VOL|
73|  J11    J2      J5    J3       J10        J9          J6    J1|
74+---------------------------------------------------------------+
75 
76U62 is a 16 DIN for a RTC chip (optional)
77J Connectors used for all input/output and power. PCB is NON-JAMMA
78 
79Chips:
80   CPU: MC68HC000FN12
81 Video: XC3042A (Sigma Xilinx FPGA gate array)
82 Sound: OKI M6295
83   OSC: 32MHz, 24MHz & 8.664MHz
84 Other: SCN68681C1N40 (Serial controller chip)
85        DALLAS DS1225AB-85 Nonvolatile SRAM
86        DALLAS DS1204V (used for security)
87        DALLAS DS1232 (MicroMonitor Chip)
88   RAM: W24257AK-15 (x2 used for CPU data)
89        CY7C128A-55PC (x2 used for serial communication)
90        W241024AJ-15 (x4 used for blitter frame buffer)
91 
92******************************************************************
93 
94[Galaxy Games]
95 
96Input:  Trackballs and buttons
97Other:  EEPROM
98To Do:
99 
100- Coin optics
101 
102***************************************************************************/
103 
104#include "emu.h"
105#include "cpu/m68000/m68000.h"
106#include "sound/okim6295.h"
107#include "machine/eepromser.h"
108#include "machine/microtch.h"
109#include "machine/mc68681.h"
110#include "machine/nvram.h"
111#include "machine/ds1204.h"
112 
113/***************************************************************************
114 
115                                 General
116 
117***************************************************************************/
118 
119class tmaster_state : public driver_device
120{
121public:
122   tmaster_state(const machine_config &mconfig, device_type type, const char *tag)
123      : driver_device(mconfig, type, tag),
124      m_maincpu(*this,"maincpu"),
125      m_microtouch(*this,"microtouch"),
126      m_regs(*this, "regs"),
127      m_galgames_ram(*this, "galgames_ram"),
128      m_oki(*this, "oki"),
129      m_duart(*this, "duart68681"),
130      m_screen(*this, "screen"),
131      m_palette(*this, "palette") { }
132 
133   required_device<cpu_device> m_maincpu;
134   optional_device<microtouch_device> m_microtouch;
135   required_shared_ptr<UINT16> m_regs;
136   optional_shared_ptr<UINT16> m_galgames_ram;
137   required_device<okim6295_device> m_oki;
138   optional_device<mc68681_device> m_duart;
139   required_device<screen_device> m_screen;
140   required_device<palette_device> m_palette;
141 
142   int m_okibank;
143   UINT8 m_rtc_ram[8];
144   bitmap_ind16 m_bitmap[2][2];
145   UINT16 m_color;
146   UINT16 m_addr;
147   UINT32 m_gfx_offs;
148   UINT32 m_gfx_size;
149   int (tmaster_state::*m_compute_addr) (UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
150   UINT16 m_galgames_cart;
151   UINT32 m_palette_offset;
152   UINT8 m_palette_index;
153   UINT8 m_palette_data[3];
154 
155   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
156   DECLARE_READ16_MEMBER(rtc_r);
157   DECLARE_WRITE16_MEMBER(rtc_w);
158   DECLARE_WRITE16_MEMBER(tmaster_color_w);
159   DECLARE_WRITE16_MEMBER(tmaster_addr_w);
160   DECLARE_WRITE16_MEMBER(tmaster_blitter_w);
161   DECLARE_READ16_MEMBER(tmaster_blitter_r);
162   DECLARE_READ_LINE_MEMBER(read_rand);
163   DECLARE_READ16_MEMBER(galgames_eeprom_r);
164   DECLARE_WRITE16_MEMBER(galgames_eeprom_w);
165   DECLARE_WRITE16_MEMBER(galgames_palette_offset_w);
166   DECLARE_WRITE16_MEMBER(galgames_palette_data_w);
167   DECLARE_READ16_MEMBER(galgames_okiram_r);
168   DECLARE_WRITE16_MEMBER(galgames_okiram_w);
169   DECLARE_WRITE16_MEMBER(galgames_cart_sel_w);
170   DECLARE_READ16_MEMBER(galgames_cart_clock_r);
171   DECLARE_WRITE16_MEMBER(galgames_cart_clock_w);
172   DECLARE_READ16_MEMBER(galgames_cart_data_r);
173   DECLARE_WRITE16_MEMBER(galgames_cart_data_w);
174   DECLARE_READ16_MEMBER(dummy_read_01);
175   DECLARE_WRITE_LINE_MEMBER(write_oki_bank0);
176   DECLARE_WRITE_LINE_MEMBER(write_oki_bank1);
177   DECLARE_DRIVER_INIT(galgames);
178   DECLARE_DRIVER_INIT(galgame2);
179   DECLARE_MACHINE_RESET(tmaster);
180   DECLARE_VIDEO_START(tmaster);
181   DECLARE_MACHINE_RESET(galgames);
182   DECLARE_VIDEO_START(galgames);
183   UINT32 screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
184   TIMER_DEVICE_CALLBACK_MEMBER(tm3k_interrupt);
185   UINT8 binary_to_BCD(UINT8 data);
186   int tmaster_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
187   int galgames_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high);
188   void tmaster_draw();
189   void galgames_update_rombank(UINT32 cart);
190};
191 
192 
193/***************************************************************************
194 
195                                   Sound
196 
197***************************************************************************/
198 
199WRITE_LINE_MEMBER(tmaster_state::write_oki_bank0)
200{
201   if (state)
202      m_okibank |= 1;
203   else
204      m_okibank &= ~1;
205 
206   m_oki->set_bank_base(m_okibank * 0x40000);
207}
208 
209WRITE_LINE_MEMBER(tmaster_state::write_oki_bank1)
210{
211   if (state)
212      m_okibank |= 2;
213   else
214      m_okibank &= ~2;
215 
216   m_oki->set_bank_base(m_okibank * 0x40000);
217}
218 
219/***************************************************************************
220 
221    68681 DUART <-> Microtouch touch screen controller communication
222 
223***************************************************************************/
224 
225WRITE_LINE_MEMBER(tmaster_state::duart_irq_handler)
226{
227   m_maincpu->set_input_line_and_vector(4, state, m_duart->get_irq_vector());
228};
229 
230/***************************************************************************
231 
232  DS1644 RTC
233 
234***************************************************************************/
235 
236 
237UINT8 tmaster_state::binary_to_BCD(UINT8 data)
238{
239   data %= 100;
240 
241   return ((data / 10) << 4) | (data %10);
242}
243 
244READ16_MEMBER(tmaster_state::rtc_r)
245{
246   system_time systime;
247 
248   machine().current_datetime(systime);
249   m_rtc_ram[0x1] = binary_to_BCD(systime.local_time.second);
250   m_rtc_ram[0x2] = binary_to_BCD(systime.local_time.minute);
251   m_rtc_ram[0x3] = binary_to_BCD(systime.local_time.hour);
252   m_rtc_ram[0x4] = binary_to_BCD(systime.local_time.weekday);
253   m_rtc_ram[0x5] = binary_to_BCD(systime.local_time.mday);
254   m_rtc_ram[0x6] = binary_to_BCD(systime.local_time.month+1);
255   m_rtc_ram[0x7] = binary_to_BCD(systime.local_time.year % 100);
256 
257   return m_rtc_ram[offset];
258}
259 
260WRITE16_MEMBER(tmaster_state::rtc_w)
261{
262   if ( offset == 0 )
263   {
264      m_rtc_ram[0x0] = data & 0xff;
265   }
266}
267 
268 
269/***************************************************************************
270 
271                                Video & Blitter
272 
273 
274    Offset:     Bits:                     Value:
275 
276        00
277 
278        02      fedc ba-- ---- ----
279                ---- --9- ---- ----       Layer 1 Buffer To Display
280                ---- ---8 ---- ----       Layer 0 Buffer To Display
281                ---- ---- 7654 3210
282 
283        04                                Width
284        06                                X
285 
286        08                                Height - 1
287        0A                                Y
288 
289        0C                                Source Address (low)
290        0E                                Source Address (mid)
291 
292        10      fedc ba98 ---- ----
293                ---- ---- 7--- ----       Layer
294                ---- ---- -6-- ----       Buffer
295                ---- ---- --5- ----       Solid Fill
296                ---- ---- ---4 ----       flipped by lev.3 interrupt routine
297                ---- ---- ---- 3---       flipped by lev.2 interrupt routine
298                ---- ---- ---- -2--       flipped by lev.1 interrupt routine
299                ---- ---- ---- --1-       Flip Y
300                ---- ---- ---- ---0       Flip X
301 
302    Addr Register:
303 
304                fedc ba98 ---- ----       Solid Fill Pen
305                ---- ---- 7654 3210       Source Address (high)
306 
307    Color Register:
308 
309                fedc ba98 ---- ----       Source Pen (Pen Replacement Mode)
310                ---- ---- 7654 3210       Palette (0-f) / Destination Pen (Pen Replacement Mode)
311 
312    A write to the source address (mid) triggers the blit.
313    A the end of the blit, a level 2 IRQ is issued.
314 
315***************************************************************************/
316 
317int tmaster_state::tmaster_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high)
318{
319   return (reg_low & 0xff) | ((reg_mid & 0x1ff) << 8) | (reg_high << 17);
320}
321 
322int tmaster_state::galgames_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high)
323{
324   return reg_low | (reg_mid << 16);
325}
326 
327VIDEO_START_MEMBER(tmaster_state,tmaster)
328{
329   int layer, buffer;
330   for (layer = 0; layer < 2; layer++)
331   {
332      for (buffer = 0; buffer < 2; buffer++)
333      {
334         m_screen->register_screen_bitmap(m_bitmap[layer][buffer]);
335         m_bitmap[layer][buffer].fill(0xff);
336      }
337   }
338 
339   m_compute_addr = &tmaster_state::tmaster_compute_addr;
340}
341 
342VIDEO_START_MEMBER(tmaster_state,galgames)
343{
344   VIDEO_START_CALL_MEMBER( tmaster );
345   m_compute_addr = &tmaster_state::galgames_compute_addr;
346}
347 
348UINT32 tmaster_state::screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
349{
350   int layers_ctrl = -1;
351 
352#ifdef MAME_DEBUG
353   if (machine().input().code_pressed(KEYCODE_Z))
354   {
355      int mask = 0;
356      if (machine().input().code_pressed(KEYCODE_Q))  mask |= 1;
357      if (machine().input().code_pressed(KEYCODE_W))  mask |= 2;
358      if (mask != 0) layers_ctrl &= mask;
359   }
360#endif
361 
362 
363   bitmap.fill(m_palette->black_pen(), cliprect);
364 
365   if (layers_ctrl & 1)    copybitmap_trans(bitmap, m_bitmap[0][(m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
366   if (layers_ctrl & 2)    copybitmap_trans(bitmap, m_bitmap[1][(m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
367 
368   return 0;
369}
370 
371WRITE16_MEMBER(tmaster_state::tmaster_color_w)
372{
373   COMBINE_DATA( &m_color );
374}
375 
376WRITE16_MEMBER(tmaster_state::tmaster_addr_w)
377{
378   COMBINE_DATA( &m_addr );
379}
380 
381void tmaster_state::tmaster_draw()
382{
383   int x,y,x0,x1,y0,y1,dx,dy,flipx,flipy,sx,sy,sw,sh, addr, mode, layer,buffer, color;
384 
385   UINT8 *gfxdata  =   memregion( "blitter" )->base() + m_gfx_offs;
386 
387   UINT16 pen;
388 
389   buffer  =   (m_regs[0x02/2] >> 8) & 3;   // 1 bit per layer, selects the currently displayed buffer
390   sw      =    m_regs[0x04/2];
391   sx      =    m_regs[0x06/2];
392   sh      =    m_regs[0x08/2] + 1;
393   sy      =    m_regs[0x0a/2];
394   addr    =   (this->*m_compute_addr)(
395               m_regs[0x0c/2],
396               m_regs[0x0e/2], m_addr);
397   mode    =    m_regs[0x10/2];
398 
399   layer   =   (mode >> 7) & 1;    // layer to draw to
400   buffer  =   ((mode >> 6) & 1) ^ ((buffer >> layer) & 1);    // bit 6 selects whether to use the opposite buffer to that displayed
401   bitmap_ind16 &bitmap    =   m_bitmap[layer][buffer];
402 
403   addr <<= 1;
404 
405#ifdef MAME_DEBUG
406#if 0
407   logerror("%s: blit w %03x, h %02x, x %03x, y %02x, src %06x, fill/addr %04x, repl/color %04x, mode %02x\n", machine().describe_context(),
408         sw,sh,sx,sy, addr, m_addr, m_color, mode
409   );
410#endif
411#endif
412 
413   flipx = mode & 1;
414   flipy = mode & 2;
415 
416   if (flipx)  { x0 = sw-1;    x1 = -1;    dx = -1;    sx -= sw-1; }
417   else        { x0 = 0;       x1 = sw;    dx = +1;    }
418 
419   if (flipy)  { y0 = sh-1;    y1 = -1;    dy = -1;    sy -= sh-1; }
420   else        { y0 = 0;       y1 = sh;    dy = +1;    }
421 
422   sx = (sx & 0x7fff) - (sx & 0x8000);
423   sy = (sy & 0x7fff) - (sy & 0x8000);
424 
425   color = (m_color & 0x0f) << 8;
426 
427   switch (mode & 0x20)
428   {
429      case 0x00:                          // blit with transparency
430         if (addr > m_gfx_size - sw*sh)
431         {
432            logerror("%s: blit error, addr %06x out of bounds\n", machine().describe_context(),addr);
433            addr = m_gfx_size - sw*sh;
434         }
435 
436         if ( mode & 0x200 )
437         {
438            // copy from ROM, replacing occurrences of src pen with dst pen
439 
440            UINT8 dst_pen = (m_color >> 8) & 0xff;
441            UINT8 src_pen = (m_color >> 0) & 0xff;
442 
443            for (y = y0; y != y1; y += dy)
444            {
445               for (x = x0; x != x1; x += dx)
446               {
447                  pen = gfxdata[addr++];
448 
449                  if (pen == src_pen)
450                     pen = dst_pen;
451 
452                  if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
453                     bitmap.pix16(sy + y, sx + x) = pen + color;
454               }
455            }
456         }
457         else
458         {
459            // copy from ROM as is
460 
461            for (y = y0; y != y1; y += dy)
462            {
463               for (x = x0; x != x1; x += dx)
464               {
465                  pen = gfxdata[addr++];
466 
467                  if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
468                     bitmap.pix16(sy + y, sx + x) = pen + color;
469               }
470            }
471         }
472         break;
473 
474      case 0x20:                          // solid fill
475         pen = ((m_addr >> 8) & 0xff) + color;
476 
477         if ((pen & 0xff) == 0xff)
478            pen = 0xff;
479 
480         for (y = y0; y != y1; y += dy)
481         {
482            for (x = x0; x != x1; x += dx)
483            {
484               if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
485                  bitmap.pix16(sy + y, sx + x) = pen;
486            }
487         }
488         break;
489 
490   }
491}
492 
493WRITE16_MEMBER(tmaster_state::tmaster_blitter_w)
494{
495   COMBINE_DATA( m_regs + offset );
496   switch (offset*2)
497   {
498      case 0x0e:
499         tmaster_draw();
500         m_maincpu->set_input_line(2, HOLD_LINE);
501         break;
502   }
503}
504 
505READ16_MEMBER(tmaster_state::tmaster_blitter_r)
506{
507   return 0x0000;  // bit 7 = 1 -> blitter busy
508}
509 
510/***************************************************************************
511 
512                                Memory Maps
513 
514***************************************************************************/
515 
516/***************************************************************************
517                                Touch Master
518***************************************************************************/
519 
520READ_LINE_MEMBER(tmaster_state::read_rand)
521{
522   return machine().rand()&1;
523}
524 
525static ADDRESS_MAP_START( tmaster_map, AS_PROGRAM, 16, tmaster_state )
526   AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
527   AM_RANGE( 0x200000, 0x27ffff ) AM_RAM
528   AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram")
529   AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE(rtc_r, rtc_w )
530 
531   AM_RANGE( 0x300010, 0x300011 ) AM_READ_PORT("COIN")
532 
533   AM_RANGE( 0x300020, 0x30003f ) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
534 
535   AM_RANGE( 0x300040, 0x300041 ) AM_WRITE_PORT("OUT")
536 
537   AM_RANGE( 0x300070, 0x300071 ) AM_WRITE(tmaster_addr_w )
538 
539   AM_RANGE( 0x500000, 0x500011 ) AM_WRITE(tmaster_blitter_w ) AM_SHARE("regs")
540   AM_RANGE( 0x500010, 0x500011 ) AM_READ(tmaster_blitter_r )
541 
542   AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often
543 
544   AM_RANGE( 0x600000, 0x601fff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
545 
546   AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
547 
548   AM_RANGE( 0x800010, 0x800011 ) AM_WRITE(tmaster_color_w )
549ADDRESS_MAP_END
550 
551 
552/***************************************************************************
553                                Galaxy Games
554***************************************************************************/
555 
556// ROM/RAM Banking
557 
558#define GALGAMES_BANK_000000_R  "000000_r"
559#define GALGAMES_BANK_000000_W  "000000_w"
560#define GALGAMES_BANK_200000_R  "200000_r"
561#define GALGAMES_BANK_200000_W  "200000_w"
562#define GALGAMES_BANK_240000_R  "240000_r"
563 
564#define GALGAMES_RAM    0
565#define GALGAMES_ROM0   1
566#define GALGAMES_ROM1   2
567#define GALGAMES_ROM2   3
568#define GALGAMES_ROM3   4
569 
570 
571// NVRAM (5 x EEPROM)
572 
573#define GALGAMES_EEPROM_BIOS  "eeprom_bios"
574#define GALGAMES_EEPROM_CART1 "eeprom_cart1"
575#define GALGAMES_EEPROM_CART2 "eeprom_cart2"
576#define GALGAMES_EEPROM_CART3 "eeprom_cart3"
577#define GALGAMES_EEPROM_CART4 "eeprom_cart4"
578 
579static const char *const galgames_eeprom_names[5] = { GALGAMES_EEPROM_BIOS, GALGAMES_EEPROM_CART1, GALGAMES_EEPROM_CART2, GALGAMES_EEPROM_CART3, GALGAMES_EEPROM_CART4 };
580 
581READ16_MEMBER(tmaster_state::galgames_eeprom_r)
582{
583   eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
584 
585   return eeprom->do_read() ? 0x80 : 0x00;
586}
587 
588WRITE16_MEMBER(tmaster_state::galgames_eeprom_w)
589{
590   if (data & ~0x0003)
591      logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",space.device().safe_pc(),data);
592 
593   if ( ACCESSING_BITS_0_7 )
594   {
595      eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
596 
597      // latch the bit
598      eeprom->di_write(data & 0x0001);
599 
600      // clock line asserted: write latch or select next bit to read
601      eeprom->clk_write((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE );
602   }
603}
604 
605// BT481A Palette RAMDAC
606 
607WRITE16_MEMBER(tmaster_state::galgames_palette_offset_w)
608{
609   if (ACCESSING_BITS_0_7)
610   {
611      m_palette_offset = data & 0xff;
612      m_palette_index = 0;
613   }
614}
615WRITE16_MEMBER(tmaster_state::galgames_palette_data_w)
616{
617   if (ACCESSING_BITS_0_7)
618   {
619      m_palette_data[m_palette_index] = data & 0xff;
620      if (++m_palette_index == 3)
621      {
622         int palette_base;
623         for (palette_base = 0; palette_base < 0x1000; palette_base += 0x100)
624            m_palette->set_pen_color(m_palette_offset + palette_base, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
625         m_palette_index = 0;
626         m_palette_offset++;
627      }
628   }
629}
630 
631// Sound
632READ16_MEMBER(tmaster_state::galgames_okiram_r)
633{
634   return memregion("oki")->base()[offset] | 0xff00;
635}
636WRITE16_MEMBER(tmaster_state::galgames_okiram_w)
637{
638   if (ACCESSING_BITS_0_7)
639      memregion("oki")->base()[offset] = data & 0xff;
640}
641 
642// Carts (preliminary, PIC communication is not implemented)
643 
644void tmaster_state::galgames_update_rombank(UINT32 cart)
645{
646   m_galgames_cart = cart;
647 
648   m_gfx_offs = 0x200000 * cart;
649 
650   if (membank(GALGAMES_BANK_000000_R)->entry() == GALGAMES_RAM)
651      membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_ROM0 + m_galgames_cart);  // rom
652 
653   membank(GALGAMES_BANK_240000_R)->set_entry(GALGAMES_ROM0 + m_galgames_cart);  // rom
654}
655 
656WRITE16_MEMBER(tmaster_state::galgames_cart_sel_w)
657{
658   // cart selection (0 1 2 3 4 7)
659 
660   if (ACCESSING_BITS_0_7)
661   {
662      int i;
663 
664      switch( data & 0xff )
665      {
666         case 0x07:      // 7 resets the eeprom
667            for (i = 0; i < 5; i++)
668               machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[i])->cs_write(CLEAR_LINE);
669            break;
670 
671         case 0x00:
672         case 0x01:
673         case 0x02:
674         case 0x03:
675         case 0x04:
676            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[data & 0xff])->cs_write(ASSERT_LINE);
677            galgames_update_rombank(data & 0xff);
678            break;
679 
680         default:
681            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[0])->cs_write(ASSERT_LINE);
682            galgames_update_rombank(0);
683            logerror("%06x: unknown cart sel = %04x\n", space.device().safe_pc(), data);
684            break;
685      }
686   }
687}
688 
689READ16_MEMBER(tmaster_state::galgames_cart_clock_r)
690{
691   return 0x0080;
692}
693 
694WRITE16_MEMBER(tmaster_state::galgames_cart_clock_w)
695{
696   if (ACCESSING_BITS_0_7)
697   {
698      // bit 3 = clock
699 
700      // ROM/RAM banking
701      if ((data & 0xf7) == 0x05)
702      {
703         membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_RAM);   // ram
704         galgames_update_rombank(m_galgames_cart);
705         logerror("%06x: romram bank = %04x\n", space.device().safe_pc(), data);
706      }
707      else
708      {
709         membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_ROM0);  // rom
710         membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_RAM);   // ram
711         logerror("%06x: unknown romram bank = %04x\n", space.device().safe_pc(), data);
712      }
713   }
714}
715 
716READ16_MEMBER(tmaster_state::galgames_cart_data_r)
717{
718   return 0;
719}
720WRITE16_MEMBER(tmaster_state::galgames_cart_data_w)
721{
722}
723 
724 
725READ16_MEMBER(tmaster_state::dummy_read_01)
726{
727   return 0x3; // Pass the check at PC = 0xfae & a later one
728}
729 
730static ADDRESS_MAP_START( galgames_map, AS_PROGRAM, 16, tmaster_state )
731 
732   AM_RANGE( 0x000000, 0x03ffff ) AM_READ_BANK(GALGAMES_BANK_000000_R) AM_WRITE_BANK(GALGAMES_BANK_000000_W) AM_SHARE("galgames_ram")
733   AM_RANGE( 0x040000, 0x1fffff ) AM_ROM AM_REGION( "maincpu", 0x40000 )
734   AM_RANGE( 0x200000, 0x23ffff ) AM_READ_BANK(GALGAMES_BANK_200000_R) AM_WRITE_BANK(GALGAMES_BANK_200000_W)
735   AM_RANGE( 0x240000, 0x3fffff ) AM_READ_BANK(GALGAMES_BANK_240000_R)
736 
737   AM_RANGE( 0x400000, 0x400011 ) AM_WRITE(tmaster_blitter_w ) AM_SHARE("regs")
738   AM_RANGE( 0x400012, 0x400013 ) AM_WRITE(tmaster_addr_w )
739   AM_RANGE( 0x400014, 0x400015 ) AM_WRITE(tmaster_color_w )
740   AM_RANGE( 0x400020, 0x400021 ) AM_READ(tmaster_blitter_r )
741 
742   AM_RANGE( 0x600000, 0x600001 ) AM_READ(dummy_read_01 ) AM_WRITENOP
743   AM_RANGE( 0x700000, 0x700001 ) AM_READ(dummy_read_01 ) AM_WRITENOP
744   AM_RANGE( 0x800020, 0x80003f ) AM_NOP   // ?
745   AM_RANGE( 0x900000, 0x900001 ) AM_WRITE(watchdog_reset16_w )
746 
747   AM_RANGE( 0xa00000, 0xa00001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
748   AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15
749 
750   AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE(galgames_palette_offset_w )
751   AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE(galgames_palette_data_w )
752 
753   AM_RANGE( 0xd00000, 0xd00001 ) AM_READ_PORT("TRACKBALL_1_X")
754   AM_RANGE( 0xd00000, 0xd00001 ) AM_WRITENOP
755   AM_RANGE( 0xd00002, 0xd00003 ) AM_READ_PORT("TRACKBALL_1_Y")
756   AM_RANGE( 0xd00004, 0xd00005 ) AM_READ_PORT("TRACKBALL_2_X")
757   AM_RANGE( 0xd00006, 0xd00007 ) AM_READ_PORT("TRACKBALL_2_Y")
758   AM_RANGE( 0xd00008, 0xd00009 ) AM_READ_PORT("P1")
759   AM_RANGE( 0xd0000a, 0xd0000b ) AM_READ_PORT("P2")
760   AM_RANGE( 0xd0000c, 0xd0000d ) AM_READ_PORT("SYSTEM") AM_WRITENOP
761 
762   AM_RANGE( 0xd0000e, 0xd0000f ) AM_WRITE(galgames_cart_sel_w )
763   AM_RANGE( 0xd00010, 0xd00011 ) AM_READWRITE(galgames_eeprom_r, galgames_eeprom_w )
764   AM_RANGE( 0xd00012, 0xd00013 ) AM_READWRITE(galgames_cart_data_r, galgames_cart_data_w )
765   AM_RANGE( 0xd00014, 0xd00015 ) AM_READWRITE(galgames_cart_clock_r, galgames_cart_clock_w )
766 
767ADDRESS_MAP_END
768 
769 
770/***************************************************************************
771 
772                                Input Ports
773 
774***************************************************************************/
775static INPUT_PORTS_START( tm )
776   PORT_START("COIN")
777   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN5 )    // "M. Coin 1 Input"
778   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN6 )    // "M. Coin 2 Input"
779   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BILL1 ) PORT_IMPULSE(2)    // "DBV Input"
780   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
781   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )  // service coin?
782   PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW )
783   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) // "Calibrate"
784   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
785   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
786   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
787   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
788   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, read_rand )
789   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN1 )    // "E. Coin 1" (ECA?) tmaster defaults to e. coin,
790   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN2 )    // "E. Coin 2" (ECA?) rather than m. coin
791   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 )    // "E. Coin 3" (ECA?) so they're coin1-coin4
792   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 )    // "E. Coin 4" (ECA?)
793 
794   PORT_START("OUT")
795   //0800?
796   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, write_oki_bank1 )
797   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( DEVICE_SELF, tmaster_state, write_oki_bank0 )
798   //0002?
799INPUT_PORTS_END
800 
801static INPUT_PORTS_START( tm2k )
802   PORT_INCLUDE( tm )
803 
804   PORT_MODIFY("COIN")
805   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN3 )    // "E. Coin 1" (ECA mech) The rest of the tm games
806   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN4 )    // "E. Coin 2" (ECA mech) Default to m. coin
807   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN5 )    // "E. Coin 3" (ECA mech) So these are coin3-coin6
808   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN6 )    // "E. Coin 4" (ECA mech)
809INPUT_PORTS_END
810 
811static INPUT_PORTS_START( tm4k )
812   PORT_INCLUDE( tm2k )
813 
814   PORT_MODIFY("COIN")
815   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, read_dq )
816 
817   PORT_MODIFY( "OUT" )
818   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_rst )
819   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_dq )
820   PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER( "ds1204", ds1204_device, write_clk )
821INPUT_PORTS_END
822 
823static INPUT_PORTS_START( galgames )
824   PORT_START("P1")
825   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
826   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
827   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
828   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
829   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)   // Button A (right)
830   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)   // Button B (left)
831   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
832   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
833   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
834 
835   PORT_START("P2")
836   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
837   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
838   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
839   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
840   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)   // Button A (right)
841   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)   // Button B (left)
842   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1)          // DBA (coin)
843   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
844   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
845 
846   PORT_START("SYSTEM")
847   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )    // CS 1 (coin)
848   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )    // CS 2 (coin)
849   PORT_SERVICE( 0x0004, IP_ACTIVE_HIGH )  // System Check
850   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
851   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
852   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
853   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
854   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
855   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
856 
857   PORT_START("TRACKBALL_1_X")
858   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_RESET
859 
860   PORT_START("TRACKBALL_1_Y")
861   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_RESET
862 
863   PORT_START("TRACKBALL_2_X")
864   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(2) PORT_RESET
865 
866   PORT_START("TRACKBALL_2_Y")
867   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_PLAYER(2) PORT_RESET
868INPUT_PORTS_END
869 
870 
871/***************************************************************************
872 
873                               Machine Drivers
874 
875***************************************************************************/
876 
877MACHINE_RESET_MEMBER(tmaster_state,tmaster)
878{
879   m_gfx_offs = 0;
880   m_gfx_size = memregion("blitter")->bytes();
881 
882}
883 
884TIMER_DEVICE_CALLBACK_MEMBER(tmaster_state::tm3k_interrupt)
885{
886   int scanline = param;
887 
888   if(scanline == 0) // vblank, FIXME
889      m_maincpu->set_input_line(3, HOLD_LINE);
890   else if((scanline % 16) == 0)
891      m_maincpu->set_input_line(1, HOLD_LINE);
892 
893   // lev 2 triggered at the end of the blit
894}
895 
896static MACHINE_CONFIG_START( tm, tmaster_state )
897   MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12MHz */
898   MCFG_CPU_PROGRAM_MAP(tmaster_map)
899   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1)
900 
901   MCFG_MACHINE_RESET_OVERRIDE(tmaster_state,tmaster)
902 
903   MCFG_MC68681_ADD( "duart68681", XTAL_8_664MHz / 2 /*??*/)
904   MCFG_MC68681_IRQ_CALLBACK(WRITELINE(tmaster_state, duart_irq_handler))
905   MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("microtouch", microtouch_device, rx))
906 
907   MCFG_MICROTOUCH_ADD( "microtouch", 9600, DEVWRITELINE("duart68681", mc68681_device, rx_a_w) )
908 
909   MCFG_NVRAM_ADD_0FILL("nvram")
910 
911   MCFG_SCREEN_ADD("screen", RASTER)
912   MCFG_SCREEN_REFRESH_RATE(60)
913   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
914   MCFG_SCREEN_SIZE(400, 256)
915   MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
916   MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
917   MCFG_SCREEN_PALETTE("palette")
918 
919   MCFG_PALETTE_ADD("palette", 0x1000)
920   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
921 
922   MCFG_VIDEO_START_OVERRIDE(tmaster_state,tmaster)
923 
924   MCFG_SPEAKER_STANDARD_MONO("mono")
925 
926   MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
927   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
928MACHINE_CONFIG_END
929 
930static MACHINE_CONFIG_DERIVED( tm2k, tm )
931   MCFG_OKIM6295_REPLACE("oki", XTAL_32MHz / 16, OKIM6295_PIN7_HIGH)  /* 2MHz; clock frequency & pin 7 not verified */
932   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
933MACHINE_CONFIG_END
934 
935static MACHINE_CONFIG_DERIVED( tm4k, tm2k )
936   MCFG_DS1204_ADD("ds1204")
937MACHINE_CONFIG_END
938 
939MACHINE_RESET_MEMBER(tmaster_state,galgames)
940{
941   m_gfx_offs = 0;
942   m_gfx_size = 0x200000;
943 
944   membank(GALGAMES_BANK_000000_R)->set_entry(GALGAMES_ROM0);  // rom
945   membank(GALGAMES_BANK_000000_W)->set_entry(GALGAMES_RAM);       // ram
946 
947   membank(GALGAMES_BANK_200000_R)->set_entry(GALGAMES_RAM);       // ram
948   membank(GALGAMES_BANK_200000_W)->set_entry(GALGAMES_RAM);       // ram
949 
950   membank(GALGAMES_BANK_240000_R)->set_entry(GALGAMES_ROM0);  // rom
951 
952   galgames_update_rombank(0);
953 
954   m_maincpu->reset();
955}
956 
957static MACHINE_CONFIG_START( galgames, tmaster_state )
958   MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2)
959   MCFG_CPU_PROGRAM_MAP(galgames_map)
960   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1)
961 
962   // 5 EEPROMs on the motherboard (for BIOS + 4 Carts)
963   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_BIOS)
964   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART1)
965   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART2)
966   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART3)
967   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART4)
968 
969   MCFG_MACHINE_RESET_OVERRIDE(tmaster_state, galgames )
970 
971   /* video hardware */
972   MCFG_SCREEN_ADD("screen", RASTER)
973   MCFG_SCREEN_REFRESH_RATE(60)
974   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
975   MCFG_SCREEN_SIZE(400, 256)
976   MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
977   MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
978   MCFG_SCREEN_PALETTE("palette")
979 
980   MCFG_PALETTE_ADD("palette", 0x1000) // only 0x100 used
981   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
982 
983   MCFG_VIDEO_START_OVERRIDE(tmaster_state,galgames)
984 
985   /* sound hardware */
986   MCFG_SPEAKER_STANDARD_MONO("mono")
987 
988   MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 8, OKIM6295_PIN7_LOW) // clock frequency & pin 7 not verified
989   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
990MACHINE_CONFIG_END
991 
992/*
993    Each cartridge contains a PIC, that should provide, among other things, the following header:
994 
995    4345 5331 3939 3700 0c10 ffb3 3c00 0000       "CES1997"
996    fffe f2f7 8557 c119 0000 0000 2340 188e
997*/
998static MACHINE_CONFIG_DERIVED( galgame2, galgames )
999//  MCFG_CPU_ADD("pic", PIC12C508, XTAL_24MHz / 2)
1000MACHINE_CONFIG_END
1001 
1002 
1003/***************************************************************************
1004 
1005                               ROMs Loading
1006 
1007***************************************************************************/
1008 
1009/***************************************************************************
1010 
1011Touch Master
10121996, Midway
1013 
101468000 @ 12MHz
1015u51 - u52 program code
1016u36 -> u39 gfx
1017u8 sound
1018OKI6295
1019NVSRAM DS1225a
1020Philips SCN68681
1021Xlinx XC3042a
1022 
1023***************************************************************************/
1024 
1025ROM_START( tm )
1026   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1027   ROM_LOAD16_BYTE( "tmaster_v3.00_euro.u51", 0x000000, 0x080000, CRC(edaa5874) SHA1(48b99bc7f5a6453def265967ca7d8eefdf9dc97b) ) /* Ver: 3.00 Euro 11-25-96 */
1028   ROM_LOAD16_BYTE( "tmaster_v3.00_euro.u52", 0x000001, 0x080000, CRC(e9fd30fc) SHA1(d91ea05d5f574603883336729fb9df705688945d) ) /* Ver: 3.00 Euro 11-25-96 */
1029 
1030   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1031   ROM_LOAD16_BYTE( "tmaster_v2.1.u38", 0x100000, 0x080000, CRC(68885ef6) SHA1(010602b59c33c3e490491a296ddaf8952e315b83) ) /* Marked as Rev 2.1 */
1032   ROM_LOAD16_BYTE( "tmaster_v2.1.u36", 0x100001, 0x080000, CRC(204096ec) SHA1(9239923b7eedb6003c63ef2e8ff224edee657bbc) ) /* Marked as Rev 2.1 */
1033   // unused gap
1034   ROM_LOAD16_BYTE( "tmaster_v3.00.u39", 0x300000, 0x080000, CRC(cbb716cb) SHA1(4e8d8f6cbfb25a8161ff8fe7505d6b209650dd2b) ) /* Marked as Rev 3.00 */
1035   ROM_LOAD16_BYTE( "tmaster_v3.00.u37", 0x300001, 0x080000, CRC(e0b6a9f7) SHA1(7e057ca87833c682e5be03668469259bbdefbf20) ) /* Marked as Rev 3.00 */
1036 
1037   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1038   ROM_LOAD( "tmaster.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1039   ROM_CONTINUE(           0xc0000, 0x040000 )
1040ROM_END
1041 
1042ROM_START( tmdo )
1043   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1044   ROM_LOAD16_BYTE( "tmaster_v2.2-01.u51", 0x000000, 0x080000, CRC(12e1b085) SHA1(b01325e0067204991a707db24e3e2036708ebccf) ) /* Ver: 2.2-01 Standard 10-17-96 */
1045   ROM_LOAD16_BYTE( "tmaster_v2.2-01.u52", 0x000001, 0x080000, CRC(6c2c643f) SHA1(8dd7930f4c499483ca46b0b97bde94cb8d6e06aa) ) /* Ver: 2.2-01 Standard 10-17-96 */
1046 
1047   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1048   ROM_LOAD16_BYTE( "tmaster_v2.1.u38", 0x100000, 0x080000, CRC(68885ef6) SHA1(010602b59c33c3e490491a296ddaf8952e315b83) ) /* Marked as Rev 2.1 */
1049   ROM_LOAD16_BYTE( "tmaster_v2.1.u36", 0x100001, 0x080000, CRC(204096ec) SHA1(9239923b7eedb6003c63ef2e8ff224edee657bbc) ) /* Marked as Rev 2.1 */
1050   // unused gap
1051   ROM_LOAD16_BYTE( "tmaster_v2.1.u39", 0x300000, 0x080000, CRC(a4445260) SHA1(915347f69d7ea45f8f299a67d77ff437983495d2) ) /* Marked as Rev 2.1 */
1052   ROM_LOAD16_BYTE( "tmaster_v2.1.u37", 0x300001, 0x080000, CRC(0e140a3e) SHA1(10a34e3b95c0d36fe687fe8c1124ef244a93d720) ) /* Marked as Rev 2.1 */
1053 
1054   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1055   ROM_LOAD( "tmaster.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1056   ROM_CONTINUE(           0xc0000, 0x040000 )
1057ROM_END
1058 
1059/***************************************************************************
1060 
1061Touchmaster 2000
1062by Midway (c) 1996
1063touchscreen game
1064 
1065All chips are ST M27C4001
1066---------------------------
1067 
1068Name_Board Location        Version               Use             Checksum
1069-------------------------------------------------------------------------
1070TM2K_v463.u51              4.63 Game Program & Cpu instructions   2342
1071TM2K_v463.u52              4.63 Game Program & Cpu instructions   4619
1072 
1073TM2K_v402.u51              4.02 Game Program & Cpu instructions   c517
1074TM2K_v402.u52              4.02 Game Program & Cpu instructions   e82c
1075 
1076TM2K_v400.u51              4.00 Game Program & Cpu instructions   a49b
1077TM2K_v400.u52              4.00 Game Program & Cpu instructions   7c2f
1078 
1079TM2K_graphic.u36           4.00 Video Images & Graphics           20cb
1080TM2K_graphic.u37           4.00 Video Images & Graphics           f5cf
1081TM2K_graphic.u38           4.00 Video Images & Graphics           14c7
1082TM2K_graphic.u39           4.00 Video Images & Graphics           043e
1083TM2K_graphic.u40           4.62 Video Images & Graphics           14c7
1084TM2K_graphic.u41           4.62 Video Images & Graphics           9334
1085TM2K_sound.u8              1.0  Audio Program & sounds            dbde
1086 
1087Does not require a security key
1088 
1089***************************************************************************/
1090 
1091ROM_START( tm2k )
1092   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1093   ROM_LOAD16_BYTE( "tm2k_v4.63.u51", 0x000000, 0x100000, CRC(f73fdb23) SHA1(d0a5e98d5de85fd3f29d1efe6b7aebe9e348c59b) ) /* Ver: 4.63 Standard 9-3-97 */
1094   ROM_LOAD16_BYTE( "tm2k_v4.63.u52", 0x000001, 0x100000, CRC(79ac719c) SHA1(7717362ea42fc36009e0fed430f07c946553bfd3) ) /* Ver: 4.63 Standard 9-3-97 */
1095 
1096   ROM_REGION( 0x600000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1097   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* First 4 graphic roms marked as Rev 4.00 */
1098   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1099   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1100   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1101   ROM_LOAD16_BYTE( "tm2k_graphic.u41", 0x500000, 0x080000, CRC(abac4ad3) SHA1(d3944a39b46f3e67ddb0ff7047685c6c716a393c) ) /* Last 2 graphics roms marked as Rev 4.62 */
1102   ROM_LOAD16_BYTE( "tm2k_graphic.u40", 0x500001, 0x080000, CRC(ca86b9a2) SHA1(bb639af4e0ee48c3231de5f0a0f14de20836216a) )
1103 
1104   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1105   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1106   ROM_CONTINUE(              0xc0000, 0x040000 )
1107ROM_END
1108 
1109ROM_START( tm2ka )
1110   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1111   ROM_LOAD16_BYTE( "tm2k_v4.02.u51", 0x000000, 0x080000, CRC(47269aeb) SHA1(6b7ebfde290f7d21a36a72b00dc6523490581edb) ) /* Ver: 4.02 Standard 5-30-97 */
1112   ROM_LOAD16_BYTE( "tm2k_v4.02.u52", 0x000001, 0x080000, CRC(2e3564ac) SHA1(9a71f38841bc17c291cb3f513b18ebe50fc18d9f) ) /* Ver: 4.02 Standard 5-30-97 */
1113 
1114   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1115   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* All 4 graphic roms marked as Rev 4.00 */
1116   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1117   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1118   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1119   /* Sockets U40 & U41 not populated with earlier Touchmaster 2000 sets */
1120 
1121   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1122   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1123   ROM_CONTINUE(              0xc0000, 0x040000 )
1124ROM_END
1125 
1126ROM_START( tm2kb )
1127   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1128   ROM_LOAD16_BYTE( "tm2k_v4.00.u51", 0x000000, 0x080000, CRC(c110502b) SHA1(e9415ed23b9bb0851548e75c208ebcbe6ac2a708) ) /* Ver: 4.00 Standard 5-16-97 */
1129   ROM_LOAD16_BYTE( "tm2k_v4.00.u52", 0x000001, 0x080000, CRC(a17c1d6e) SHA1(5ecb8f27f75469ab9600b3f640eb1acc7a3980e0) ) /* Ver: 4.00 Standard 5-16-97 */
1130 
1131   ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE )  // Blitter gfx
1132   ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* All 4 graphic roms marked as Rev 4.00 */
1133   ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) )
1134   ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) )
1135   ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) )
1136   /* Sockets U40 & U41 not populated with earlier Touchmaster 2000 sets */
1137 
1138   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1139   ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */
1140   ROM_CONTINUE(              0xc0000, 0x040000 )
1141ROM_END
1142 
1143/***************************************************************************
1144 
1145Touchmaster 3000
1146by Midway (c) 1997
1147touchscreen game
1148 
1149All chips are SGS 27C801 (some kits/upgrades used mask roms)
1150---------------------------
1151 
1152Name_Board Location        Version               Use             Checksum
1153-------------------------------------------------------------------------
1154TM3K_v502.u51              5.02 Game Program & Cpu instructions   c308
1155TM3K_v502.u52              5.02 Game Program & Cpu instructions   4d5e
1156 
1157TM3K_v501.u51              5.01 Game Program & Cpu instructions   0c6c
1158TM3K_v501.u52              5.01 Game Program & Cpu instructions   b2d8
1159 
1160TM3K_graphic.u36           5.0  Video Images & Graphics           54f1
1161TM3K_graphic.u37           5.0  Video Images & Graphics           4856
1162TM3K_graphic.u38           5.0  Video Images & Graphics           5493
1163TM3K_graphic.u39           5.0  Video Images & Graphics           6029
1164TM3K_graphic.u40           5.0  Video Images & Graphics           ccb4
1165TM3K_graphic.u41           5.0  Video Images & Graphics           e9ab
1166TM3K_sound.u8              5.0  Audio Program & sounds            64d5
1167 
1168Does not require a security key
1169 
1170Box labeled as:
1171 
1172TMSTR 3000 UPGRADE KIT USA-DBV
117363373100870
1174 
1175***************************************************************************/
1176 
1177ROM_START( tm3k )
1178   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1179   ROM_LOAD16_BYTE( "tm3k_v5.02.u51", 0x000000, 0x100000, CRC(6267e2bd) SHA1(c81e5cd059a9ad2f6a36261738e39740a1a3a03f) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */
1180   ROM_LOAD16_BYTE( "tm3k_v5.02.u52", 0x000001, 0x100000, CRC(836fdf1e) SHA1(2ee9c0929950afb72f172b253d6c392e9a698037) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */
1181 
1182   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1183   ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */
1184   ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */
1185   ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */
1186   ROM_LOAD16_BYTE( "tm3k_graphic.u37", 0x200001, 0x100000, CRC(18f50eb3) SHA1(a7c9d3b24b5fd110380ec87d9200d55cad473efc) ) /* Labeled TOUCHMASTER U37 STANDARD 5.0 (pink label) */
1187   ROM_LOAD16_BYTE( "tm3k_graphic.u41", 0x400000, 0x100000, CRC(c35c0536) SHA1(a29fd88e8f3e124f6e84012c3573616f6447eeaa) ) /* Labeled TOUCHMASTER U41 STANDARD 5.0 (pink label) */
1188   ROM_LOAD16_BYTE( "tm3k_graphic.u40", 0x400001, 0x100000, CRC(353df7ca) SHA1(d6c5d5449af6b6a3acee219778583904c5b554b4) ) /* Labeled TOUCHMASTER U40 STANDARD 5.0 (pink label) */
1189 
1190   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1191   ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */
1192ROM_END
1193 
1194ROM_START( tm3ka )
1195   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1196   ROM_LOAD16_BYTE( "tm3k_v5.01.u51", 0x000000, 0x100000, CRC(c9522279) SHA1(e613b791f831271722f05b7e96c35519fa9fc174) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */
1197   ROM_LOAD16_BYTE( "tm3k_v5.01.u52", 0x000001, 0x100000, CRC(8c6a0db7) SHA1(6b0eae60ea471cd8c4001749ac2677d8d4532567) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */
1198 
1199   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1200   ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */
1201   ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */
1202   ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */
1203   ROM_LOAD16_BYTE( "tm3k_graphic.u37", 0x200001, 0x100000, CRC(18f50eb3) SHA1(a7c9d3b24b5fd110380ec87d9200d55cad473efc) ) /* Labeled TOUCHMASTER U37 STANDARD 5.0 (pink label) */
1204   ROM_LOAD16_BYTE( "tm3k_graphic.u41", 0x400000, 0x100000, CRC(c35c0536) SHA1(a29fd88e8f3e124f6e84012c3573616f6447eeaa) ) /* Labeled TOUCHMASTER U41 STANDARD 5.0 (pink label) */
1205   ROM_LOAD16_BYTE( "tm3k_graphic.u40", 0x400001, 0x100000, CRC(353df7ca) SHA1(d6c5d5449af6b6a3acee219778583904c5b554b4) ) /* Labeled TOUCHMASTER U40 STANDARD 5.0 (pink label) */
1206 
1207   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1208   ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */
1209ROM_END
1210 
1211/***************************************************************************
1212 
1213Touchmaster 4000
1214by Midway (c) 1998
1215touchscreen game
1216 
1217All chips are SGS 27C801 (some kits/upgrades used mask roms)
1218---------------------------
1219 
1220Name_Board Location        Version               Use                      Checksum
1221-----------------------------------------------------------------------------------
1222TM4K_v603.u51              6.03 Game Program & Cpu instructions 96B0
1223TM4K_v603.u52              6.03 Game Program & Cpu instructions 2842
1224 
1225TM4K_v602.u51              6.02 Game Program & Cpu instructions FEA0
1226TM4K_v602.u52              6.02 Game Program & Cpu instructions 9A71
1227 
1228TM4K_v601.u51              6.01 Game Program & Cpu instructions 6FF1
1229TM4K_v601.u52              6.01 Game Program & Cpu instructions 6643
1230 
1231TM4K_graphic.u36           6.0  Video Images & Graphics         54F1 (same as TM3K)
1232TM4K_graphic.u37           6.0  Video Images & Graphics         609E
1233TM4K_graphic.u38           6.0  Video Images & Graphics         5493 (same as TM3K)
1234TM4K_graphic.u39           6.0  Video Images & Graphics         CB90
1235TM4K_graphic.u40           6.0  Video Images & Graphics         208A
1236TM4K_graphic.u41           6.0  Video Images & Graphics         385D
1237TM4K_sound.u8              6.0  Audio Program & sounds          DE0B
1238 
1239J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-003
1240 
1241***************************************************************************/
1242 
1243ROM_START( tm4k )
1244   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1245   ROM_LOAD16_BYTE( "tm4k_v6.03.u51", 0x000000, 0x100000, CRC(0c88c856) SHA1(4c60c09812ab05f9dccef3038a5ddbd4632dbf4e) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.03 (Standard 6-23-98) */
1246   ROM_LOAD16_BYTE( "tm4k_v6.03.u52", 0x000001, 0x100000, CRC(9320bfe9) SHA1(cc3a51f439c139ca30efe28a817cf4f68679180e) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.03 (Standard 6-23-98) */
1247 
1248   ROM_REGION( 0x000022, "ds1204", 0 )
1249   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1250 
1251   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1252   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1253   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1254   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1255   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1256   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1257   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1258 
1259   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1260   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1261ROM_END
1262 
1263ROM_START( tm4knj ) /* New Jersey version only */
1264   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1265   ROM_LOAD16_BYTE( "tm4knj_v6.03.u51", 0x000000, 0x100000, CRC(fcaf10d2) SHA1(67bf584223c4bb7436bd9a03eb799895ecd26a26) ) /* TOUCHMASTER 4000 U51 NEW JERSEY  6.03 (New Jersey 3-23-98) */
1266   ROM_LOAD16_BYTE( "tm4knj_v6.03.u52", 0x000001, 0x100000, CRC(bed6f9e9) SHA1(695509a2b47e1d70cdbad765f581605b31065b8c) ) /* TOUCHMASTER 4000 U52 NEW JERSEY  6.03 (New Jersey 3-23-98) */
1267 
1268   ROM_REGION( 0x000022, "ds1204", 0 )
1269   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1270 
1271   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1272   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1273   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1274   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1275   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1276   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1277   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1278 
1279   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1280   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1281ROM_END
1282 
1283ROM_START( tm4ka )
1284   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1285   ROM_LOAD16_BYTE( "tm4k_v6.02.u51", 0x000000, 0x100000, CRC(3d8d7848) SHA1(31638f23cdd5e6cfbb2270e953f84fe1bd437950) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.02 (Standard 4-14-98) */
1286   ROM_LOAD16_BYTE( "tm4k_v6.02.u52", 0x000001, 0x100000, CRC(6d412871) SHA1(ae27c7723b292daf6682c53bafac22e4a3cd1ece) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.02 (Standard 4-14-98) */
1287 
1288   ROM_REGION( 0x000022, "ds1204", 0 )
1289   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1290 
1291   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1292   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1293   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1294   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1295   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1296   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1297   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1298 
1299   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1300   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1301ROM_END
1302 
1303ROM_START( tm4kca ) /* California version only */
1304   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1305   ROM_LOAD16_BYTE( "tm4k_v6.02ca.u51", 0x000000, 0x100000, CRC(b355e15e) SHA1(e6a6cd74d3439f589ac0a914ec66962ce2885c00) ) /* TOUCHMASTER 4000 U51 CALIFORNIA  6.02 (CA. 4-14-98) */
1306   ROM_LOAD16_BYTE( "tm4k_v6.02ca.u52", 0x000001, 0x100000, CRC(0adbbfc0) SHA1(4660bd95649bfc65d3e52975d168de4963bd27cb) ) /* TOUCHMASTER 4000 U52 CALIFORNIA  6.02 (CA. 4-14-98) */
1307 
1308   ROM_REGION( 0x000022, "ds1204", 0 )
1309   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1310 
1311   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1312   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1313   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1314   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1315   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1316   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1317   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1318 
1319   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1320   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1321ROM_END
1322 
1323ROM_START( tm4kb )
1324   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1325   ROM_LOAD16_BYTE( "tm4k_v6.01.u51", 0x000000, 0x100000, CRC(cdcfd064) SHA1(51f022d25411d119a5f16ff7f09f4bed59b937e1) ) /* TOUCHMASTER 4000 U51 DOMESTIC  6.01 (Standard 3-23-98) */
1326   ROM_LOAD16_BYTE( "tm4k_v6.01.u52", 0x000001, 0x100000, CRC(e0bf71a9) SHA1(8f5e70dee60cd95aceac4707ff73bdff578a6139) ) /* TOUCHMASTER 4000 U52 DOMESTIC  6.01 (Standard 3-23-98) */
1327 
1328   ROM_REGION( 0x000022, "ds1204", 0 )
1329   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1330 
1331   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1332   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1333   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1334   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1335   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1336   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1337   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1338 
1339   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1340   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1341ROM_END
1342 
1343ROM_START( tm4kmn ) /* Minnesota only version */
1344   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1345   ROM_LOAD16_BYTE( "tm4kmn_v6.01.u51", 0x000000, 0x100000, CRC(66b7f936) SHA1(7d13b24440f15bc29587b35d32f8a34019cc2462) ) /* TOUCHMASTER 4000 U51 MINNESOTA  6.01 (MN. 3-30-98) */
1346   ROM_LOAD16_BYTE( "tm4kmn_v6.01.u52", 0x000001, 0x100000, CRC(34fa24bb) SHA1(4c4f706f8f09bfd1f81fbf71b377c0eb2cbfa97d) ) /* TOUCHMASTER 4000 U52 MINNESOTA  6.01 (MN. 3-30-98) */
1347 
1348   ROM_REGION( 0x000022, "ds1204", 0 )
1349   ROM_LOAD( "a-21657-003", 0x0000, 0x000022, CRC(b9facb2a) SHA1(17157534f45ec6db78f952586bd98f1f7e7215c1) )
1350 
1351   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1352   ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */
1353   ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */
1354   ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */
1355   ROM_LOAD16_BYTE( "tm4k_graphic.u37", 0x200001, 0x100000, CRC(bf49fafa) SHA1(b400667bf654dc9cd01a85c8b99670459400fd60) ) /* Mask rom labeled 5341-15746-02 U37 VIDEO IMAGE */
1356   ROM_LOAD16_BYTE( "tm4k_graphic.u41", 0x400000, 0x100000, CRC(e97edb1e) SHA1(75510676cf1692ad03efd4ccd57d25af1cc8ef2a) ) /* Mask rom labeled 5341-15746-06 U41 VIDEO IMAGE */
1357   ROM_LOAD16_BYTE( "tm4k_graphic.u40", 0x400001, 0x100000, CRC(f6771a09) SHA1(74f71d5e910006c83a38170f24aa811c38a3e020) ) /* Mask rom labeled 5341-15746-05 U40 VIDEO IMAGE */
1358 
1359   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1360   ROM_LOAD( "tm4k_sound.u8", 0x00000, 0x100000, CRC(48c3782b) SHA1(bfe105ddbde8bbbd84665dfdd565d6d41926834a) ) /* Mask rom labeled 5341-15746-07 U8 SOUND IMAGE */
1361ROM_END
1362 
1363/***************************************************************************
1364 
1365Touchmaster 5000
1366by Midway (c) 1998
1367touchscreen game
1368 
1369All chips are ST M27C801 (some kits/upgrades used mask roms)
1370---------------------------
1371 
1372Name Board Location        Version               Use                      Checksum
1373-----------------------------------------------------------------------------------
1374tm5k_v7_10.u51             7.10 Game Program & Cpu instructions 1A51
1375tm5k_v7_10.u52             7.10 Game Program & Cpu instructions 5A01
1376tm5k_graphic.u36           7.0  Video Images & Graphics         DB7F
1377tm5k_graphic.u37           7.0  Video Images & Graphics         871B
1378tm5k_graphic.u38           7.0  Video Images & Graphics         EDCE
1379tm5k_graphic.u39           7.0  Video Images & Graphics         657F
1380tm5k_graphic.u40           7.0  Video Images & Graphics         93E0
1381tm5k_graphic.u41           7.0  Video Images & Graphics         FCA5
1382tm5k_sound.u8              7.0  Audio Program & sounds          F474
1383 
1384J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-004
1385-----------------------------------------------------------------------------------
1386 
1387* EPROM versions are labeled with white labels
1388 
1389***************************************************************************/
1390 
1391ROM_START( tm5k )
1392   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1393   ROM_LOAD16_BYTE( "tm5k_v7.10.u51", 0x000000, 0x100000, CRC(df0bd25e) SHA1(db1a197ed4c868743397f3823f3f1d42b9329f80) ) /* TOUCHMASTER 5000 U51 DOMESTIC 7.10 (Standard 10-9-98) (tan label) */
1394   ROM_LOAD16_BYTE( "tm5k_v7.10.u52", 0x000001, 0x100000, CRC(ddf9e8dc) SHA1(3228f2eba067bdf1bd639116bffc589585ea3e72) ) /* TOUCHMASTER 5000 U52 DOMESTIC 7.10 (Standard 10-9-98) (tan label) */
1395 
1396   ROM_REGION( 0x000022, "ds1204", 0 )
1397   ROM_LOAD( "a-21657-004", 0x0000, 0x000022, CRC(14b5d50a) SHA1(6c8d3f9a3b44ce5f8273a2f86a6c0f98423b7c7d) )
1398 
1399   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1400   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1401   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1402   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1403   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1404   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1405   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1406 
1407   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1408   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1409ROM_END
1410 
1411ROM_START( tm5kca ) /* California only version */
1412   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1413   ROM_LOAD16_BYTE( "tm5kca_v7.10.u51", 0x000000, 0x100000, CRC(7c03708f) SHA1(e1f8198bc03c1f9d2a00662b589fd66fdcc7a2de) ) /* TOUCHMASTER 5000 U51 CALIFORNIA 7.10 (CA. 10-9-98) (tan label) */
1414   ROM_LOAD16_BYTE( "tm5kca_v7.10.u52", 0x000001, 0x100000, CRC(f1413295) SHA1(ad6b57c590bdae063b0e4a1abcb3b13ee52cd6db) ) /* TOUCHMASTER 5000 U52 CALIFORNIA 7.10 (CA. 10-9-98) (tan label) */
1415 
1416   ROM_REGION( 0x000022, "ds1204", 0 )
1417   ROM_LOAD( "a-21657-004", 0x0000, 0x000022, CRC(14b5d50a) SHA1(6c8d3f9a3b44ce5f8273a2f86a6c0f98423b7c7d) )
1418 
1419   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1420   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1421   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1422   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1423   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1424   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1425   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1426 
1427   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1428   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1429ROM_END
1430 
1431ROM_START( tm5kmn ) /* Minnesota only version */
1432   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1433   ROM_LOAD16_BYTE( "tm5kmn_v7.10.u51", 0x000000, 0x100000, CRC(eb12e430) SHA1(48de1d49025cd3fc844d0399d58efc630c51ab28) ) /* TOUCHMASTER 5000 U51 MINNESOTA 7.10 (MN. 10-9-98) (tan label) */
1434   ROM_LOAD16_BYTE( "tm5kmn_v7.10.u52", 0x000001, 0x100000, CRC(6a4e75d9) SHA1(b0049b5d5f649aedb568d71aacfcb648320dd53b) ) /* TOUCHMASTER 5000 U52 MINNESOTA 7.10 (MN. 10-9-98) (tan label) */
1435 
1436   ROM_REGION( 0x000022, "ds1204", 0 )
1437   ROM_LOAD( "a-21657-004", 0x0000, 0x000022, CRC(14b5d50a) SHA1(6c8d3f9a3b44ce5f8273a2f86a6c0f98423b7c7d) )
1438 
1439   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1440   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1441   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1442   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1443   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1444   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1445   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1446 
1447   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1448   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1449ROM_END
1450 
1451ROM_START( tm5ka )
1452   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1453   ROM_LOAD16_BYTE( "tm5k_v7.01.u51", 0x000000, 0x100000, CRC(3ff68213) SHA1(ec4939899a69f56d2437c806fdd0a5b50e58ec6a) ) /* TOUCHMASTER 5000 U51 DOMESTIC 7.01 (Standard 8-21-98) (pink label) */
1454   ROM_LOAD16_BYTE( "tm5k_v7.01.u52", 0x000001, 0x100000, CRC(b3de607c) SHA1(4ede5b8c50177d1934a3b93d311a240ef354c450) ) /* TOUCHMASTER 5000 U52 DOMESTIC 7.01 (Standard 8-21-98) (pink label) */
1455 
1456   ROM_REGION( 0x000022, "ds1204", 0 )
1457   ROM_LOAD( "a-21657-004", 0x0000, 0x000022, CRC(14b5d50a) SHA1(6c8d3f9a3b44ce5f8273a2f86a6c0f98423b7c7d) )
1458 
1459   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1460   ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */
1461   ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */
1462   ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */
1463   ROM_LOAD16_BYTE( "tm5k_graphic.u37", 0x200001, 0x100000, CRC(8bcc376c) SHA1(0588f6f96090b26a3ce0eb3a933a5cc9d8ce742d) ) /* Mask rom labeled 5341-15951-04 U37 VIDEO IMAGE */
1464   ROM_LOAD16_BYTE( "tm5k_graphic.u41", 0x400000, 0x100000, CRC(c8717fef) SHA1(fbd13321db0f35b7bdf207468f28792a7666bb2e) ) /* Mask rom labeled 5341-15951-09 U41 VIDEO IMAGE */
1465   ROM_LOAD16_BYTE( "tm5k_graphic.u40", 0x400001, 0x100000, CRC(cff3f962) SHA1(2389d94ffa0eaf2d2f62315822273db031eea033) ) /* Mask rom labeled 5341-15951-08 U40 VIDEO IMAGE */
1466 
1467   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1468   ROM_LOAD( "tm5k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-15951-03 U8 VIDEO IMAGE */
1469ROM_END
1470 
1471/***************************************************************************
1472 
1473Touchmaster 7000
1474by Midway (c) 1999
1475touchscreen game
1476 
1477All chips are ST M27C801 (some kits/upgrades used mask roms)
1478---------------------------
1479 
1480Name Board Location        Version               Use                      Checksum
1481-----------------------------------------------------------------------------------
1482tm7k_v804.u51              8.04 Game Program & Cpu instructions 321B
1483tm7k_v804.u52              8.04 Game Program & Cpu instructions 2DED
1484 
1485tm7k_v800.u51              8.00 Game Program & Cpu instructions 82A5
1486tm7k_v800.u52              8.00 Game Program & Cpu instructions 81E1
1487 
1488tm7k_graphic.u36           8.0  Video Images & Graphics         DB7F (same as TM5K)
1489tm7k_graphic.u37           8.0  Video Images & Graphics         7461
1490tm7k_graphic.u38           8.0  Video Images & Graphics         EDCE (same as TM5K)
1491tm7k_graphic.u39           8.0  Video Images & Graphics         2BB6
1492tm7k_graphic.u40           8.0  Video Images & Graphics         B103
1493tm7k_graphic.u41           8.0  Video Images & Graphics         11CA
1494tm7k_sound.u8              8.0  Audio Program & sounds          F474 (same as TM5K)
1495 
1496J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-005
1497-----------------------------------------------------------------------------------
1498 
1499***************************************************************************/
1500 
1501ROM_START( tm7k )
1502   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1503   ROM_LOAD16_BYTE( "tm7k_v8.04.u51", 0x000000, 0x100000, CRC(2461af04) SHA1(9cf37c04db0297ff8f9f316fd476d6d5d1c39acf) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */
1504   ROM_LOAD16_BYTE( "tm7k_v8.04.u52", 0x000001, 0x100000, CRC(5d39fad2) SHA1(85e8d110b88e1099117ab7963eaee47dc86ec7c5) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */
1505 
1506   ROM_REGION( 0x000022, "ds1204", 0 )
1507   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(affa047b) SHA1(5a576ce3d0d0ec35994937c89daab4360f46690d) )
1508 
1509   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1510   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1511   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1512   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1513   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1514   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1515   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1516 
1517   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1518   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1519ROM_END
1520 
1521ROM_START( tm7knj ) /* New Jersey version only - ABC Exception No. 27 */
1522   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1523   ROM_LOAD16_BYTE( "tm7knj_v8.05.u51", 0x000000, 0x100000, CRC(46a7ed33) SHA1(e9ceb5005a6e88bd179fca0b62477cea19b82443) ) /* TOUCHMASTER 7000 U51 NEW JERSEY 8.05 (Standard 07/22/99) (orange label) */
1524   ROM_LOAD16_BYTE( "tm7knj_v8.05.u52", 0x000001, 0x100000, CRC(127e8b09) SHA1(017d4cda6205f88256cbecabf0c94e71eef93bf9) ) /* TOUCHMASTER 7000 U52 NEW JERSEY 8.05 (Standard 07/22/99) (orange label) */
1525 
1526   ROM_REGION( 0x000022, "ds1204", 0 )
1527   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(affa047b) SHA1(5a576ce3d0d0ec35994937c89daab4360f46690d) )
1528 
1529   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1530   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1531   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1532   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1533   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1534   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1535   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1536 
1537   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1538   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1539ROM_END
1540 
1541ROM_START( tm7kmn ) /* Minnesota only version */
1542   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1543   ROM_LOAD16_BYTE( "tm7kmn_v8.04.u51", 0x000000, 0x100000, CRC(c85b5adc) SHA1(418776917c1f419fd981deaab9754f4f03a2288f) ) /* TOUCHMASTER 7000 U51 MINNESOTA 8.04 (MN. 06/02/99) (orange label) */
1544   ROM_LOAD16_BYTE( "tm7kmn_v8.04.u52", 0x000001, 0x100000, CRC(542bc209) SHA1(b8314d695a36380f6be02b45eac83cfab857c258) ) /* TOUCHMASTER 7000 U52 MINNESOTA 8.04 (MN. 06/02/99) (orange label) */
1545 
1546   ROM_REGION( 0x000022, "ds1204", 0 )
1547   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(affa047b) SHA1(5a576ce3d0d0ec35994937c89daab4360f46690d) )
1548 
1549   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1550   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1551   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1552   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1553   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1554   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1555   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1556 
1557   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1558   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1559ROM_END
1560 
1561ROM_START( tm7ka )
1562   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1563   ROM_LOAD16_BYTE( "tm7k_v8.00.u51", 0x000000, 0x100000, CRC(83ec3da7) SHA1(37fa7183e7acc2eab35ac431d99cbbfe4862979e) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */
1564   ROM_LOAD16_BYTE( "tm7k_v8.00.u52", 0x000001, 0x100000, CRC(e2004282) SHA1(aa73029f31e2062cabedfcd778db97b314624ae8) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */
1565 
1566   ROM_REGION( 0x000022, "ds1204", 0 )
1567   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(affa047b) SHA1(5a576ce3d0d0ec35994937c89daab4360f46690d) )
1568 
1569   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1570   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Labeled GRAPHIC U38  8.0 (orange label) */
1571   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Labeled GRAPHIC U36  8.0 (orange label) */
1572   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Labeled GRAPHIC U39  8.0 (orange label) */
1573   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Labeled GRAPHIC U37  8.0 (orange label) */
1574   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Labeled GRAPHIC U41  8.0 (orange label) */
1575   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Labeled GRAPHIC U40  8.0 (orange label) */
1576 
1577   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1578   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Labeled SOUND U8  8.0 (orange label) */
1579ROM_END
1580 
1581ROM_START( tm7kmna ) /* Minnesota only version */
1582   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1583   ROM_LOAD16_BYTE( "tm7kmn_v8.00.u51", 0x000000, 0x100000, CRC(4bc423e9) SHA1(c9ba044b4bc8431281e174cddc8697324cbbf072) ) /* TOUCHMASTER 7000 U51 MINNESOTA 8.00 (MN. 03/26/99) (orange label) */
1584   ROM_LOAD16_BYTE( "tm7kmn_v8.00.u52", 0x000001, 0x100000, CRC(51968948) SHA1(f8b63df4480cafa453f970fb07f73103d39e2903) ) /* TOUCHMASTER 7000 U52 MINNESOTA 8.00 (MN. 03/26/99) (orange label) */
1585 
1586   ROM_REGION( 0x000022, "ds1204", 0 )
1587   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(affa047b) SHA1(5a576ce3d0d0ec35994937c89daab4360f46690d) )
1588 
1589   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1590   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */
1591   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */
1592   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */
1593   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* Mask rom labeled 5341-16262-04 U37 VIDEO IMAGE */
1594   ROM_LOAD16_BYTE( "tm7k_graphic.u41", 0x400000, 0x100000, CRC(99b6edda) SHA1(c0ee2834fdbfbc1159a6d08c45552d4d9c1c4ea4) ) /* Mask rom labeled 5341-16262-09 U41 VIDEO IMAGE */
1595   ROM_LOAD16_BYTE( "tm7k_graphic.u40", 0x400001, 0x100000, CRC(a3925379) SHA1(74836325ab10466e23105a3b54fc706c0dd5f06c) ) /* Mask rom labeled 5341-16262-08 U40 VIDEO IMAGE */
1596 
1597   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1598   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16262-03 U8 SOUND */
1599ROM_END
1600 
1601ROM_START( tm7keval ) /* FREEPLAY ONLY / NOT FOR RELEASE / FOR EVALUATION ONLY */
1602   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1603   ROM_LOAD16_BYTE( "tm7k_v8.1x.u51", 0x000000, 0x100000, CRC(57c88287) SHA1(1008bbcd137ede321be4cc2ad22e3982d880471b) ) /* TOUCHMASTER 7000 U51 8.1X (ASI Standard 03/08/99) (white label) */
1604   ROM_LOAD16_BYTE( "tm7k_v8.1x.u52", 0x000001, 0x100000, CRC(e45d69bb) SHA1(9e8a42924a9cd573cbd2f3164d0fb468eee7ff51) ) /* TOUCHMASTER 7000 U52 8.1X (ASI Standard 03/08/99) (white label) */
1605 
1606   ROM_REGION( 0x000022, "ds1204", 0 )
1607   ROM_LOAD( "a-21657-005", 0x000000, 0x000022, CRC(14b5d50a) SHA1(6c8d3f9a3b44ce5f8273a2f86a6c0f98423b7c7d) )
1608 
1609   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1610   ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* TOUCHMASTER EDCE V8.X U38 (white label) */
1611   ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* TOUCHMASTER DB7F V8.X U36 (white label) */
1612   ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* TOUCHMASTER 2BB6 V8.X U39 (white label) */
1613   ROM_LOAD16_BYTE( "tm7k_graphic.u37", 0x200001, 0x100000, CRC(9a705043) SHA1(cffb31859544c1c4082be78b3bca5ad9cd0d2a45) ) /* TOUCHMASTER 7461 V8.X U37 (white label) */
1614   ROM_LOAD16_BYTE( "tm7k_v8x.u41",     0x400000, 0x100000, CRC(d15757f0) SHA1(d09a83dc00812a4208d5684e8cfba1f5d1e3f097) ) /* TOUCHMASTER 335E V8.X U41 (white label) */
1615   ROM_LOAD16_BYTE( "tm7k_v8x.u40",     0x400001, 0x100000, CRC(d3596f63) SHA1(a2474bc1a73b5782f8169b0529a535269ea82440) ) /* TOUCHMASTER 7987 V8.X U40 (white label) */
1616 
1617   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1618   ROM_LOAD( "tm7k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Labeled SOUND U8  8.0 (orange label) */
1619ROM_END
1620 
1621/***************************************************************************
1622 
1623Touchmaster 8000
1624by Midway (c) 2000
1625touchscreen game
1626 
1627All chips are ST M27C801 (some kits/upgrades used mask roms)
1628---------------------------
1629 
1630Name Board Location        Version               Use                      Checksum
1631-----------------------------------------------------------------------------------
1632tm8k_v904.u51              9.04 Game Program & Cpu instructions D40F
1633tm8k_v904.u52              9.04 Game Program & Cpu instructions 53B2
1634 
1635tm8k_graphic.u36           9.0  Video Images & Graphics         AD8D
1636tm8k_graphic.u37           9.0  Video Images & Graphics         AF83
1637tm8k_graphic.u38           9.0  Video Images & Graphics         6BCF
1638tm8k_graphic.u39           9.0  Video Images & Graphics         C8A6
1639tm8k_graphic.u40           9.0  Video Images & Graphics         B8C7
1640tm8k_graphic.u41           9.0  Video Images & Graphics         EF93
1641tm8k_sound.u8              9.0  Audio Program & sounds          F474 (same as TM5K & TM7K)
1642 
1643J12 DALLAS DS1204V         N/A  Security Key (required for this Version) - Labeled A-21657-007
1644-----------------------------------------------------------------------------------
1645 
1646***************************************************************************/
1647 
1648/* According to the Distributor notice from Midway, the only thing updated for v9.04 was the "Power Cell" game to 'improve the performance'. */
1649ROM_START( tm8k )
1650   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1651   ROM_LOAD16_BYTE( "tm8k_v9.04.u51", 0x000000, 0x100000, CRC(28864ec8) SHA1(e703f9ee350dd915102e784bbd04445a95b7d0a5) ) /* TOUCHMASTER 8000 U51 DOMESTIC 9.04 (Standard 04/25/00) */
1652   ROM_LOAD16_BYTE( "tm8k_v9.04.u52", 0x000001, 0x100000, CRC(c123eec2) SHA1(3e9c84755b18a4fd900068f385ee47107771391d) ) /* TOUCHMASTER 8000 U52 DOMESTIC 9.04 (Standard 04/25/00) */
1653 
1654   ROM_REGION( 0x000022, "ds1204", 0 )
1655   ROM_LOAD( "a-21657-007", 0x000000, 0x000022, CRC(a1776e90) SHA1(40116d693b565fe472c278ea583b50e2b708630a) )
1656 
1657   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1658   ROM_LOAD16_BYTE( "tm8k_graphic.u38", 0x000000, 0x100000, CRC(2a971d46) SHA1(6ca4067e9fa40053df415e670b2e853915319dbb) ) /* Mask rom labeled 5341-16513-07 U38 VIDEO IMAGE */
1659   ROM_LOAD16_BYTE( "tm8k_graphic.u36", 0x000001, 0x100000, CRC(3bde285e) SHA1(87bf60034665542fb0240b7479adfffb7ba9fad7) ) /* Mask rom labeled 5341-16513-06 U36 VIDEO IMAGE */
1660   ROM_LOAD16_BYTE( "tm8k_graphic.u39", 0x200000, 0x100000, CRC(58c6c1d8) SHA1(cc11863c4ea46bde7ea4775075f4328be6d6c6d1) ) /* Mask rom labeled 5341-16513-05 U39 VIDEO IMAGE */
1661   ROM_LOAD16_BYTE( "tm8k_graphic.u37", 0x200001, 0x100000, CRC(c0992f7a) SHA1(e4e1ef2414f2f0a784c775f39123122c08950403) ) /* Mask rom labeled 5341-16513-04 U37 VIDEO IMAGE */
1662   ROM_LOAD16_BYTE( "tm8k_graphic.u41", 0x400000, 0x100000, CRC(d8bdb82e) SHA1(9bdee261591ccff8a57c5454644f84f8992f614f) ) /* Mask rom labeled 5341-16513-09 U41 VIDEO IMAGE */
1663   ROM_LOAD16_BYTE( "tm8k_graphic.u40", 0x400001, 0x100000, CRC(0c3d6347) SHA1(7ef19018c180abf412a8ff9f278b00c2b4321cc2) ) /* Mask rom labeled 5341-16513-08 U40 VIDEO IMAGE */
1664 
1665   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1666   ROM_LOAD( "tm8k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16513-03 U8 SOUND */
1667ROM_END
1668 
1669ROM_START( tm8k902 )
1670   ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
1671   ROM_LOAD16_BYTE( "tm8k_v9.02.u51", 0x000000, 0x100000, CRC(c0d95b2c) SHA1(2240d969047ada856ec2fac6cdf72db722753a6d) ) /* TOUCHMASTER 8000 U51 DOMESTIC 9.02 (Standard 03/17/00) */
1672   ROM_LOAD16_BYTE( "tm8k_v9.02.u52", 0x000001, 0x100000, CRC(5194c1b5) SHA1(28a91d12a022927bfe96afd62b30b268c0ced3ea) ) /* TOUCHMASTER 8000 U52 DOMESTIC 9.02 (Standard 03/17/00) */
1673 
1674   ROM_REGION( 0x000022, "ds1204", 0 )
1675   ROM_LOAD( "a-21657-007", 0x000000, 0x000022, CRC(a1776e90) SHA1(40116d693b565fe472c278ea583b50e2b708630a) )
1676 
1677   ROM_REGION( 0x600000, "blitter", 0 )    // Blitter gfx
1678   ROM_LOAD16_BYTE( "tm8k_graphic.u38", 0x000000, 0x100000, CRC(2a971d46) SHA1(6ca4067e9fa40053df415e670b2e853915319dbb) ) /* Mask rom labeled 5341-16513-07 U38 VIDEO IMAGE */
1679   ROM_LOAD16_BYTE( "tm8k_graphic.u36", 0x000001, 0x100000, CRC(3bde285e) SHA1(87bf60034665542fb0240b7479adfffb7ba9fad7) ) /* Mask rom labeled 5341-16513-06 U36 VIDEO IMAGE */
1680   ROM_LOAD16_BYTE( "tm8k_graphic.u39", 0x200000, 0x100000, CRC(58c6c1d8) SHA1(cc11863c4ea46bde7ea4775075f4328be6d6c6d1) ) /* Mask rom labeled 5341-16513-05 U39 VIDEO IMAGE */
1681   ROM_LOAD16_BYTE( "tm8k_graphic.u37", 0x200001, 0x100000, CRC(c0992f7a) SHA1(e4e1ef2414f2f0a784c775f39123122c08950403) ) /* Mask rom labeled 5341-16513-04 U37 VIDEO IMAGE */
1682   ROM_LOAD16_BYTE( "tm8k_graphic.u41", 0x400000, 0x100000, CRC(d8bdb82e) SHA1(9bdee261591ccff8a57c5454644f84f8992f614f) ) /* Mask rom labeled 5341-16513-09 U41 VIDEO IMAGE */
1683   ROM_LOAD16_BYTE( "tm8k_graphic.u40", 0x400001, 0x100000, CRC(0c3d6347) SHA1(7ef19018c180abf412a8ff9f278b00c2b4321cc2) ) /* Mask rom labeled 5341-16513-08 U40 VIDEO IMAGE */
1684 
1685   ROM_REGION( 0x100000, "oki", 0 ) // Samples
1686   ROM_LOAD( "tm8k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16513-03 U8 SOUND */
1687ROM_END
1688 
1689/***************************************************************************
1690 
1691Galaxy Games BIOS v. 1.90
1692 
1693This is a multi-game cocktail cabinet released in 1998.  Namco seems to have
1694made some cartridges for it (or at least licensed their IP).
1695 
1696Trackball-based. 'BIOS' has 7 built-in games. There are two LEDs on the PCB.
1697 
1698More information here : http://www.cesgames.com/museum/galaxy/index.html
1699 
1700----
1701 
1702Board silkscreened  237-0211-00
1703                    REV.-D
1704 
1705Cartridge based mother board
1706Holds up to 4 cartridges
1707Chips labeled
1708    GALAXY U1 V1.90 12/1/98
1709    GALAXY U2 V1.90 12/1/98
1710 
1711Motorola MC68HC000FN12
171224 MHz oscillator
1713Xilinx XC5206
1714Xilinx XC5202
1715BT481AKPJ110 (Palette RAMDAC)
1716NKK N341024SJ-15    x8  (128kB RAM)
1717OKI M6295 8092352-2
1718 
1719PAL16V8H-15 @ U24   Blue dot on it
1720PAL16V8H-15 @ U25   Yellow dot on it
1721PAL16V8H-15 @ U26   Red dot on it
1722PAL16V8H-15 @ U27   Green dot on it
1723PAL16V8H-15 @ U45   red dot on it
1724 
1725***************************************************************************/
1726 
1727#define GALGAMES_BIOS_ROMS \
1728   ROM_SYSTEM_BIOS( 0, "0",   "v1.90" ) \
1729   ROMX_LOAD( "galaxy.u2", 0x000000, 0x100000, CRC(e51ff184) SHA1(aaa795f2c15ec29b3ceeb5c917b643db0dbb7083), ROM_SKIP(1) | ROM_BIOS(1) ) \
1730   ROMX_LOAD( "galaxy.u1", 0x000001, 0x100000, CRC(c6d7bc6d) SHA1(93c032f9aa38cbbdda59a8a25ff9f38f7ad9c760), ROM_SKIP(1) | ROM_BIOS(1) )
1731 
1732#define GALGAMES_MB_PALS \
1733   ROM_REGION( 0xa00, "pals", 0) \
1734   ROM_LOAD( "16v8h-blue.u24",    0x000, 0x117, NO_DUMP ) \
1735   ROM_LOAD( "16v8h-yellow.u25",  0x200, 0x117, NO_DUMP ) \
1736   ROM_LOAD( "16v8h-magenta.u26", 0x400, 0x117, NO_DUMP ) \
1737   ROM_LOAD( "16v8h-green.u27",   0x600, 0x117, NO_DUMP ) \
1738   ROM_LOAD( "16v8h-red.u45",     0x800, 0x117, NO_DUMP )
1739 
1740ROM_START( galgbios )
1741   ROM_REGION( 0x200000, "maincpu", 0 )
1742   GALGAMES_BIOS_ROMS
1743 
1744   ROM_REGION( 0x200000, "blitter", 0 )
1745   ROM_COPY( "maincpu", 0, 0, 0x200000 )
1746 
1747   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
1748   // RAM, filled by the 68000 and fed to the OKI
1749 
1750   GALGAMES_MB_PALS
1751ROM_END
1752 
1753/***************************************************************************
1754 
1755Galaxy Games StarPak 2
1756 
1757NAMCO 307 Cartridge, has surface mount Flash chips in it:
1758 
1759.u1 am29f800BB
1760.u2 am29f800BB
1761.u4 pic 12c508
1762 
1763Board silkscreened  237-0209-00
1764                    REV.-C
1765 
1766***************************************************************************/
1767 
1768ROM_START( galgame2 )
1769   ROM_REGION( 0x200000 * 2, "maincpu", 0 )
1770   GALGAMES_BIOS_ROMS
1771   ROM_LOAD16_BYTE( "namco.u2",  0x200000, 0x100000, CRC(f43c0c54) SHA1(4a13946c3d173b0e4ab25b01849574fa3302b417) )
1772   ROM_LOAD16_BYTE( "namco.u1",  0x200001, 0x100000, CRC(b8c34a8b) SHA1(40d3b35f573d2bd2ae1c7d876c55fc436864fa3f) )
1773 
1774   ROM_REGION( 0x9db, "pic", 0 )
1775   ROM_LOAD( "namco.u4", 0x000, 0x9db, CRC(63ec1224) SHA1(2966b2aa431e6b8d46cbba18a6fc4de7395caa04) )
1776 
1777   ROM_REGION( 0x200000 * 2, "blitter", 0 )
1778   ROM_COPY( "maincpu", 0, 0, 0x200000 * 2 )
1779 
1780   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
1781   // RAM, filled by the 68000 and fed to the OKI
1782 
1783   GALGAMES_MB_PALS
1784ROM_END
1785 
1786 
1787DRIVER_INIT_MEMBER(tmaster_state,galgames)
1788{
1789   UINT8 *ROM  =   memregion("maincpu")->base();
1790   int cart;
1791 
1792   // RAM bank at 0x000000-0x03ffff and 0x200000-0x23ffff
1793   // ROM bank at 0x000000-0x1fffff and 0x200000-0x3fffff (bios)
1794 
1795   membank(GALGAMES_BANK_000000_R)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
1796   membank(GALGAMES_BANK_000000_R)->configure_entry(GALGAMES_ROM0, ROM+0x000000);
1797 
1798   membank(GALGAMES_BANK_000000_W)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
1799 
1800   membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
1801   membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_ROM0, ROM+0x000000);
1802 
1803   membank(GALGAMES_BANK_200000_W)->configure_entry(GALGAMES_RAM,  m_galgames_ram);
1804 
1805   membank(GALGAMES_BANK_240000_R)->configure_entry(GALGAMES_ROM0, ROM+0x040000);
1806 
1807   // More ROM banks at 0x200000-0x3fffff (carts)
1808 
1809   for (cart = 1; cart <= 4; cart++)
1810   {
1811      UINT8 *CART = memregion("maincpu")->base();
1812 
1813      if  (0x200000 * (cart+1) <= memregion("maincpu")->bytes())
1814         CART += 0x200000 * cart;
1815 
1816      membank(GALGAMES_BANK_200000_R)->configure_entry(GALGAMES_ROM0+cart, CART);
1817      membank(GALGAMES_BANK_240000_R)->configure_entry(GALGAMES_ROM0+cart, CART+0x040000);
1818   }
1819}
1820 
1821DRIVER_INIT_MEMBER(tmaster_state,galgame2)
1822{
1823   UINT16 *ROM = (UINT16 *)memregion( "maincpu" )->base();
1824 
1825   // Patch BIOS to see the game code as first cartridge (until the PIC therein is emulated)
1826   ROM[0x118da/2] = 0x4a06;
1827   ROM[0x118dc/2] = 0x6704;
1828   ROM[0x118de/2] = 0x7000;
1829   ROM[0x118e0/2] = 0x6002;
1830   ROM[0x118e2/2] = 0x7001;
1831   ROM[0x118e4/2] = 0x4e71;
1832   ROM[0x118e6/2] = 0x4e71;
1833   ROM[0x118e8/2] = 0x4e71;
1834 
1835   // Cartdridge check on game selection screen
1836   ROM[0x12da0/2] = 0x4e71;
1837 
1838   DRIVER_INIT_CALL(galgames);
1839}
1840 
1841GAME( 1996, tm,       0,        tm,       tm,       driver_device, 0,        ROT0, "Midway Games Inc. / CES Inc.",            "Touchmaster (v3.00 Euro)",               0 )
1842GAME( 1996, tmdo,     tm,       tm,       tm,       driver_device, 0,        ROT0, "Midway Games Inc. / CES Inc.",            "Touchmaster (v2.2-01 Standard)",         0 )
1843GAME( 1996, tm2k,     0,        tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 Plus (v4.63 Standard)", 0 )
1844GAME( 1996, tm2ka,    tm2k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 (v4.02 Standard)",      0 )
1845GAME( 1996, tm2kb,    tm2k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 2000 (v4.00 Standard)",      0 )
1846GAME( 1997, tm3k,     0,        tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 3000 (v5.02 Standard)",      0 )
1847GAME( 1997, tm3ka,    tm3k,     tm2k,     tm2k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 3000 (v5.01 Standard)",      0 )
1848GAME( 1998, tm4k,     0,        tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.03 Standard)",      0 )
1849GAME( 1998, tm4knj,   tm4k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.03 New Jersey)",    0 )
1850GAME( 1998, tm4ka,    tm4k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.02 Standard)",      0 )
1851GAME( 1998, tm4kca,   tm4k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.02 California)",    0 )
1852GAME( 1998, tm4kb,    tm4k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.01 Standard)",      0 )
1853GAME( 1998, tm4kmn,   tm4k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 4000 (v6.01 Minnesota)",     0 )
1854GAME( 1998, tm5k,     0,        tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 Standard)",      0 )
1855GAME( 1998, tm5kca,   tm5k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 California)",    0 )
1856GAME( 1998, tm5kmn,   tm5k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.10 Minnesota)",     0 )
1857GAME( 1998, tm5ka,    tm5k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 5000 (v7.01 Standard)",      0 )
1858GAME( 1999, tm7k,     0,        tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.04 Standard)",      0 )
1859GAME( 1999, tm7knj,   tm7k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.05 New Jersey)",    0 )
1860GAME( 1999, tm7kmn,   tm7k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.04 Minnesota)",     0 )
1861GAME( 1999, tm7ka,    tm7k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.00 Standard)",      0 )
1862GAME( 1999, tm7kmna,  tm7k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.00 Minnesota)",     0 )
1863GAME( 1999, tm7keval, tm7k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 7000 (v8.1X Evaluation)",    0 )
1864GAME( 2000, tm8k,     0,        tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 8000 (v9.04 Standard)",      0 )
1865GAME( 2000, tm8k902,  tm8k,     tm4k,     tm4k,     driver_device, 0,        ROT0, "Midway Games Inc.",                       "Touchmaster 8000 (v9.02 Standard)",      0 )
1866GAME( 1998, galgbios, 0,        galgames, galgames, tmaster_state, galgames, ROT0, "Creative Electronics & Software",         "Galaxy Games (BIOS v1.90)",              GAME_IS_BIOS_ROOT )
1867GAME( 1998, galgame2, galgbios, galgame2, galgames, tmaster_state, galgame2, ROT0, "Creative Electronics & Software / Namco", "Galaxy Games StarPak 2",                 0 )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team