From dc0df4572ed47f3e926abf79add15e905e110b60 Mon Sep 17 00:00:00 2001 From: Luca Elia Date: Sun, 23 Aug 2009 18:22:46 +0000 Subject: [PATCH] tmaster.c update [Luca Elia] - implemented carts banking and multiple EEPROMs - added "pen replacement" blit mode - fixed palette size New games added or promoted from NOT_WORKING status --------------------------------------------------- Galaxy Games StarPak 2 [Luca Elia, Siftware] --- src/mame/drivers/tmaster.c | 425 +++++++++++++++++++++++++++---------- src/mame/mamedriv.c | 3 +- 2 files changed, 318 insertions(+), 110 deletions(-) diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c index 3ef8a3454c6..ba0e03be679 100644 --- a/src/mame/drivers/tmaster.c +++ b/src/mame/drivers/tmaster.c @@ -105,7 +105,7 @@ To Do: #include "cpu/m68000/m68000.h" #include "deprecat.h" #include "sound/okim6295.h" -#include "machine/eeprom.h" +#include "machine/eepromdev.h" #include "machine/microtch.h" #include "machine/68681.h" @@ -212,10 +212,11 @@ static WRITE16_HANDLER(rtc_w) Video & Blitter - Offset: Bits: Value: + Offset: Bits: Value: - 02 - fedc ba-- ---- ---- + 00 + + 02 fedc ba-- ---- ---- ---- --9- ---- ---- Layer 1 Buffer To Display ---- ---8 ---- ---- Layer 0 Buffer To Display ---- ---- 7654 3210 @@ -239,10 +240,17 @@ static WRITE16_HANDLER(rtc_w) ---- ---- ---- --1- Flip Y ---- ---- ---- ---0 Flip X - 12 fedc ba98 ---- ---- Solid Fill Pen + Addr Register: + + fedc ba98 ---- ---- Solid Fill Pen ---- ---- 7654 3210 Source Address (high) - A write to the source address (high) triggers the blit. + Color Register: + + fedc ba98 ---- ---- Source Pen (Pen Replacement Mode) + ---- ---- 7654 3210 Palette (0-f) / Destination Pen (Pen Replacement Mode) + + A write to the source address (mid) triggers the blit. A the end of the blit, a level 2 IRQ is issued. ***************************************************************************/ @@ -251,6 +259,7 @@ static bitmap_t *tmaster_bitmap[2][2]; // 2 layers, 2 buffers per layer static UINT16 *tmaster_regs; static UINT16 tmaster_color; static UINT16 tmaster_addr; +static UINT32 tmaster_gfx_offs, tmaster_gfx_size; static int (*compute_addr) (UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high); static int tmaster_compute_addr(UINT16 reg_low, UINT16 reg_mid, UINT16 reg_high) @@ -299,10 +308,10 @@ static VIDEO_UPDATE( tmaster ) #endif - if (layers_ctrl & 1) copybitmap (bitmap,tmaster_bitmap[0][(tmaster_regs[0x02/2]>>8)&1],0,0,0,0,cliprect); - else bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine)); + bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine)); - if (layers_ctrl & 2) copybitmap_trans (bitmap,tmaster_bitmap[1][(tmaster_regs[0x02/2]>>9)&1],0,0,0,0,cliprect,0xff); + if (layers_ctrl & 1) copybitmap_trans(bitmap, tmaster_bitmap[0][(tmaster_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff); + if (layers_ctrl & 2) copybitmap_trans(bitmap, tmaster_bitmap[1][(tmaster_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff); return 0; } @@ -310,10 +319,6 @@ static VIDEO_UPDATE( tmaster ) static WRITE16_HANDLER( tmaster_color_w ) { COMBINE_DATA( &tmaster_color ); -#if 0 - if (tmaster_color & ~7) - logerror("%06x: color %04x\n", cpu_get_pc(space->cpu), tmaster_color); -#endif } static WRITE16_HANDLER( tmaster_addr_w ) @@ -325,10 +330,9 @@ static void tmaster_draw(running_machine *machine) { int x,y,x0,x1,y0,y1,dx,dy,flipx,flipy,sx,sy,sw,sh, addr, mode, layer,buffer, color; - UINT8 *gfxdata = memory_region( machine, "gfx1" ); - size_t size = memory_region_length( machine, "gfx1" ); + UINT8 *gfxdata = memory_region( machine, "blitter" ) + tmaster_gfx_offs; - UINT16 data; + UINT16 pen; bitmap_t *bitmap; @@ -348,10 +352,12 @@ static void tmaster_draw(running_machine *machine) addr <<= 1; +#ifdef MAME_DEBUG #if 0 - logerror("%s: blit w %03x, h %02x, x %03x, y %02x, addr %06x, mode %02x\n", cpuexec_describe_context(machine), - sw,sh,sx,sy, addr, mode + logerror("%s: blit w %03x, h %02x, x %03x, y %02x, src %06x, fill/addr %04x, repl/color %04x, mode %02x\n", cpuexec_describe_context(machine), + sw,sh,sx,sy, addr, tmaster_addr, tmaster_color, mode ); +#endif #endif flipx = mode & 1; @@ -366,37 +372,67 @@ static void tmaster_draw(running_machine *machine) sx = (sx & 0x7fff) - (sx & 0x8000); sy = (sy & 0x7fff) - (sy & 0x8000); - color = (tmaster_color & 7) << 8; + color = (tmaster_color & 0x0f) << 8; switch (mode & 0x20) { case 0x00: // blit with transparency - if (addr > size - sw*sh) + if (addr > tmaster_gfx_size - sw*sh) { logerror("%s: blit error, addr %06x out of bounds\n", cpuexec_describe_context(machine),addr); - addr = size - sw*sh; + addr = tmaster_gfx_size - sw*sh; } - for (y = y0; y != y1; y += dy) + if ( mode & 0x200 ) { - for (x = x0; x != x1; x += dx) - { - data = gfxdata[addr++]; + // copy from ROM, replacing occurrences of src pen with dst pen - if ((data != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) - *BITMAP_ADDR16(bitmap, sy + y, sx + x) = data + color; + UINT8 dst_pen = (tmaster_color >> 8) & 0xff; + UINT8 src_pen = (tmaster_color >> 0) & 0xff; + + for (y = y0; y != y1; y += dy) + { + for (x = x0; x != x1; x += dx) + { + pen = gfxdata[addr++]; + + if (pen == src_pen) + pen = dst_pen; + + if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) + *BITMAP_ADDR16(bitmap, sy + y, sx + x) = pen + color; + } + } + } + else + { + // copy from ROM as is + + for (y = y0; y != y1; y += dy) + { + for (x = x0; x != x1; x += dx) + { + pen = gfxdata[addr++]; + + if ((pen != 0xff) && (sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) + *BITMAP_ADDR16(bitmap, sy + y, sx + x) = pen + color; + } } } break; case 0x20: // solid fill - data = ((tmaster_addr >> 8) & 0xff) + color; + pen = ((tmaster_addr >> 8) & 0xff) + color; + + if ((pen & 0xff) == 0xff) + pen = 0xff; + for (y = y0; y != y1; y += dy) { for (x = x0; x != x1; x += dx) { if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) - *BITMAP_ADDR16(bitmap, sy + y, sx + x) = data; + *BITMAP_ADDR16(bitmap, sy + y, sx + x) = pen; } } break; @@ -455,7 +491,7 @@ static ADDRESS_MAP_START( tmaster_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often - AM_RANGE( 0x600000, 0x600fff ) AM_READWRITE( SMH_RAM, paletteram16_xBBBBBGGGGGRRRRR_word_w ) AM_BASE(&paletteram16) // looks like palettes, maybe + AM_RANGE( 0x600000, 0x601fff ) AM_READWRITE( SMH_RAM, paletteram16_xBBBBBGGGGGRRRRR_word_w ) AM_BASE(&paletteram16) AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff ) @@ -467,7 +503,24 @@ ADDRESS_MAP_END Galaxy Games ***************************************************************************/ -// NVRAM +// ROM/RAM Banking + +#define GALGAMES_BANK_000000_R 1 +#define GALGAMES_BANK_000000_W 2 +#define GALGAMES_BANK_200000_R 3 +#define GALGAMES_BANK_200000_W 4 +#define GALGAMES_BANK_240000_R 5 + +#define GALGAMES_RAM 0 +#define GALGAMES_ROM0 1 +#define GALGAMES_ROM1 2 +#define GALGAMES_ROM2 3 +#define GALGAMES_ROM3 4 + +static UINT16 *galgames_ram; +static UINT16 galgames_cart; + +// NVRAM (5 x EEPROM) static const eeprom_interface galgames_eeprom_interface = { @@ -482,9 +535,19 @@ static const eeprom_interface galgames_eeprom_interface = 1 // reset_delay }; +#define GALGAMES_EEPROM_BIOS "eeprom_bios" +#define GALGAMES_EEPROM_CART1 "eeprom_cart1" +#define GALGAMES_EEPROM_CART2 "eeprom_cart2" +#define GALGAMES_EEPROM_CART3 "eeprom_cart3" +#define GALGAMES_EEPROM_CART4 "eeprom_cart4" + +const char const *galgames_eeprom_names[5] = { GALGAMES_EEPROM_BIOS, GALGAMES_EEPROM_CART1, GALGAMES_EEPROM_CART2, GALGAMES_EEPROM_CART3, GALGAMES_EEPROM_CART4 }; + static READ16_HANDLER( galgames_eeprom_r ) { - return eeprom_read_bit() ? 0x80 : 0x00; + const device_config *eeprom = devtag_get_device(space->machine, galgames_eeprom_names[galgames_cart]); + + return eepromdev_read_bit(eeprom) ? 0x80 : 0x00; } static WRITE16_HANDLER( galgames_eeprom_w ) @@ -494,22 +557,13 @@ static WRITE16_HANDLER( galgames_eeprom_w ) if ( ACCESSING_BITS_0_7 ) { + const device_config *eeprom = devtag_get_device(space->machine, galgames_eeprom_names[galgames_cart]); + // latch the bit - eeprom_write_bit(data & 0x0001); + eepromdev_write_bit(eeprom, data & 0x0001); // clock line asserted: write latch or select next bit to read - eeprom_set_clock_line((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE ); - } -} - -static NVRAM_HANDLER( galgames ) -{ - if (read_or_write) - eeprom_save(file); - else - { - eeprom_init(machine, &galgames_eeprom_interface); - if (file) eeprom_load(file); + eepromdev_set_clock_line(eeprom, (data & 0x0002) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -533,7 +587,9 @@ static WRITE16_HANDLER( galgames_palette_data_w ) palette_data[palette_index] = data & 0xff; if (++palette_index == 3) { - palette_set_color(space->machine, palette_offset, MAKE_RGB(palette_data[0], palette_data[1], palette_data[2])); + int palette_base; + for (palette_base = 0; palette_base < 0x1000; palette_base += 0x100) + palette_set_color(space->machine, palette_offset + palette_base, MAKE_RGB(palette_data[0], palette_data[1], palette_data[2])); palette_index = 0; palette_offset++; } @@ -551,16 +607,51 @@ static WRITE16_HANDLER( galgames_okiram_w ) memory_region(space->machine, "oki")[offset] = data & 0xff; } +// Carts (preliminary, PIC communication is not implemented) -// Carts communication (preliminary, no cart is dumped yet) +static void galgames_update_rombank(running_machine *machine, UINT32 cart) +{ + galgames_cart = cart; + + tmaster_gfx_offs = 0x200000 * cart; + + if (memory_get_bank(machine, GALGAMES_BANK_000000_R) == GALGAMES_RAM) + memory_set_bank(machine, GALGAMES_BANK_200000_R, GALGAMES_ROM0 + galgames_cart); // rom + + memory_set_bank(machine, GALGAMES_BANK_240000_R, GALGAMES_ROM0 + galgames_cart); // rom +} static WRITE16_HANDLER( galgames_cart_sel_w ) { // cart selection (0 1 2 3 4 7) - // 7 resets the eeprom if (ACCESSING_BITS_0_7) - eeprom_set_cs_line(((data&0xff) == 0x07) ? ASSERT_LINE : CLEAR_LINE); + { + int i; + + switch( data & 0xff ) + { + case 0x07: // 7 resets the eeprom + for (i = 0; i < 5; i++) + eepromdev_set_cs_line(devtag_get_device(space->machine, galgames_eeprom_names[i]), ASSERT_LINE); + break; + + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + eepromdev_set_cs_line(devtag_get_device(space->machine, galgames_eeprom_names[data & 0xff]), CLEAR_LINE); + galgames_update_rombank(space->machine, data & 0xff); + break; + + default: + eepromdev_set_cs_line(devtag_get_device(space->machine, galgames_eeprom_names[0]), CLEAR_LINE); + galgames_update_rombank(space->machine, 0); + logerror("%06x: unknown cart sel = %04x\n", cpu_get_pc(space->cpu), data); + break; + } + } } static READ16_HANDLER( galgames_cart_clock_r ) @@ -577,13 +668,14 @@ static WRITE16_HANDLER( galgames_cart_clock_w ) // ROM/RAM banking if ((data & 0xf7) == 0x05) { - memory_set_bank(space->machine, 1, 1); // ram - memory_set_bank(space->machine, 3, 0); // rom + memory_set_bank(space->machine, GALGAMES_BANK_000000_R, GALGAMES_RAM); // ram + galgames_update_rombank(space->machine, galgames_cart); logerror("%06x: romram bank = %04x\n", cpu_get_pc(space->cpu), data); } else { - memory_set_bank(space->machine, 1, 0); // rom + memory_set_bank(space->machine, GALGAMES_BANK_000000_R, GALGAMES_ROM0); // rom + memory_set_bank(space->machine, GALGAMES_BANK_200000_R, GALGAMES_RAM); // ram logerror("%06x: unknown romram bank = %04x\n", cpu_get_pc(space->cpu), data); } } @@ -605,10 +697,10 @@ static READ16_HANDLER( dummy_read_01 ) static ADDRESS_MAP_START( galgames_map, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE( 0x000000, 0x03ffff ) AM_READWRITE(SMH_BANK(1), SMH_BANK(2)) - AM_RANGE( 0x040000, 0x1fffff ) AM_ROM AM_REGION( "maincpu", 0 ) - AM_RANGE( 0x200000, 0x23ffff ) AM_READWRITE(SMH_BANK(3), SMH_BANK(4)) - AM_RANGE( 0x240000, 0x3fffff ) AM_ROM AM_REGION( "maincpu", 0 ) + AM_RANGE( 0x000000, 0x03ffff ) AM_READWRITE(SMH_BANK(GALGAMES_BANK_000000_R), SMH_BANK(GALGAMES_BANK_000000_W)) AM_BASE( &galgames_ram ) + AM_RANGE( 0x040000, 0x1fffff ) AM_ROM AM_REGION( "maincpu", 0x40000 ) + AM_RANGE( 0x200000, 0x23ffff ) AM_READWRITE(SMH_BANK(GALGAMES_BANK_200000_R), SMH_BANK(GALGAMES_BANK_200000_W)) + AM_RANGE( 0x240000, 0x3fffff ) AM_READ(SMH_BANK(GALGAMES_BANK_240000_R)) AM_RANGE( 0x400000, 0x400011 ) AM_WRITE( tmaster_blitter_w ) AM_BASE( &tmaster_regs ) AM_RANGE( 0x400012, 0x400013 ) AM_WRITE( tmaster_addr_w ) @@ -753,6 +845,9 @@ static MACHINE_START( tmaster ) static MACHINE_RESET( tmaster ) { + tmaster_gfx_offs = 0; + tmaster_gfx_size = memory_region_length(machine, "blitter"); + tmaster_devices.duart68681 = devtag_get_device( machine, "duart68681" ); } @@ -787,7 +882,6 @@ static MACHINE_DRIVER_START( tm3k ) MDRV_NVRAM_HANDLER(generic_0fill) - MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -795,7 +889,7 @@ static MACHINE_DRIVER_START( tm3k ) MDRV_SCREEN_SIZE(400, 256) MDRV_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1) - MDRV_PALETTE_LENGTH(0x800) + MDRV_PALETTE_LENGTH(0x1000) MDRV_VIDEO_START(tmaster) MDRV_VIDEO_UPDATE(tmaster) @@ -829,21 +923,36 @@ static INTERRUPT_GEN( galgames_interrupt ) static MACHINE_RESET( galgames ) { - memory_set_bank(machine, 1, 0); // rom - memory_set_bank(machine, 3, 1); // ram + tmaster_gfx_offs = 0; + tmaster_gfx_size = 0x200000; - memory_set_bank(machine, 2, 0); // ram - memory_set_bank(machine, 4, 0); // ram + memory_set_bank(machine, GALGAMES_BANK_000000_R, GALGAMES_ROM0); // rom + memory_set_bank(machine, GALGAMES_BANK_000000_W, GALGAMES_RAM); // ram + + memory_set_bank(machine, GALGAMES_BANK_200000_R, GALGAMES_RAM); // ram + memory_set_bank(machine, GALGAMES_BANK_200000_W, GALGAMES_RAM); // ram + + memory_set_bank(machine, GALGAMES_BANK_240000_R, GALGAMES_ROM0); // rom + + galgames_update_rombank(machine, 0); device_reset(cputag_get_cpu(machine, "maincpu")); } +UINT8 *galgames_eeprom_data = NULL; + static MACHINE_DRIVER_START( galgames ) MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) MDRV_CPU_PROGRAM_MAP(galgames_map) MDRV_CPU_VBLANK_INT_HACK(galgames_interrupt, 1+20) // ?? - MDRV_NVRAM_HANDLER( galgames ) + // 5 EEPROMs on the motherboard (for BIOS + 4 Carts) + MDRV_EEPROM_ADD(GALGAMES_EEPROM_BIOS, galgames_eeprom_interface, 0, galgames_eeprom_data) + MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART1, galgames_eeprom_interface, 0, galgames_eeprom_data) + MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART2, galgames_eeprom_interface, 0, galgames_eeprom_data) + MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART3, galgames_eeprom_interface, 0, galgames_eeprom_data) + MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART4, galgames_eeprom_interface, 0, galgames_eeprom_data) + MDRV_MACHINE_RESET( galgames ) /* video hardware */ @@ -854,7 +963,7 @@ static MACHINE_DRIVER_START( galgames ) MDRV_SCREEN_SIZE(400, 256) MDRV_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1) - MDRV_PALETTE_LENGTH(0x800) // only 0x100 used + MDRV_PALETTE_LENGTH(0x1000) // only 0x100 used MDRV_VIDEO_START(galgames) MDRV_VIDEO_UPDATE(tmaster) @@ -867,6 +976,18 @@ static MACHINE_DRIVER_START( galgames ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END +/* + Each cartridge contains a PIC, that should provide, among other things, the following header: + + 4345 5331 3939 3700 0c10 ffb3 3c00 0000 "CES1997" + fffe f2f7 8557 c119 0000 0000 2340 188e +*/ +static MACHINE_DRIVER_START( galgame2 ) + MDRV_IMPORT_FROM(galgames) +// MDRV_CPU_ADD("pic", PIC12C508, XTAL_24MHz / 2) +MACHINE_DRIVER_END + + /*************************************************************************** ROMs Loading @@ -894,7 +1015,7 @@ ROM_START( tm ) ROM_LOAD16_BYTE( "tmaster.u51", 0x000000, 0x080000, CRC(edaa5874) SHA1(48b99bc7f5a6453def265967ca7d8eefdf9dc97b) ) /* Ver: 3.00 Euro 11-25-96 */ ROM_LOAD16_BYTE( "tmaster.u52", 0x000001, 0x080000, CRC(e9fd30fc) SHA1(d91ea05d5f574603883336729fb9df705688945d) ) /* Ver: 3.00 Euro 11-25-96 */ - ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE ) // Blitter gfx + ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE ) // Blitter gfx ROM_LOAD16_BYTE( "tmaster.u38", 0x100000, 0x080000, CRC(68885ef6) SHA1(010602b59c33c3e490491a296ddaf8952e315b83) ) ROM_LOAD16_BYTE( "tmaster.u36", 0x100001, 0x080000, CRC(204096ec) SHA1(9239923b7eedb6003c63ef2e8ff224edee657bbc) ) // unused gap @@ -933,7 +1054,7 @@ ROM_START( tm2k ) ROM_LOAD16_BYTE( "tm2k_v402.u51", 0x000000, 0x100000, CRC(fa6d168c) SHA1(c458d1114c658ac963a22cdb74ee5ea489ddcbba) ) /* Ver: 4.02 Standard 5-30-97 */ ROM_LOAD16_BYTE( "tm2k_v402.u52", 0x000001, 0x100000, CRC(4e9c2d42) SHA1(67e34778f21010c43c1247179faa3f7ede5ad8d0) ) /* Ver: 4.02 Standard 5-30-97 */ - ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE ) // Blitter gfx + ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE ) // Blitter gfx ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) ) ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) ) @@ -989,7 +1110,7 @@ ROM_START( tm3k ) ROM_LOAD16_BYTE( "tm3k_v502.u51", 0x000000, 0x100000, CRC(6267e2bd) SHA1(c81e5cd059a9ad2f6a36261738e39740a1a3a03f) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */ ROM_LOAD16_BYTE( "tm3k_v502.u52", 0x000001, 0x100000, CRC(836fdf1e) SHA1(2ee9c0929950afb72f172b253d6c392e9a698037) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.02 (Standard 11-17-97) (yellow label) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */ ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */ ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */ @@ -1006,7 +1127,7 @@ ROM_START( tm3ka ) ROM_LOAD16_BYTE( "tm3k_v501.u51", 0x000000, 0x100000, CRC(c9522279) SHA1(e613b791f831271722f05b7e96c35519fa9fc174) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */ ROM_LOAD16_BYTE( "tm3k_v501.u52", 0x000001, 0x100000, CRC(8c6a0db7) SHA1(6b0eae60ea471cd8c4001749ac2677d8d4532567) ) /* TOUCHMASTER 3000 U52 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */ ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */ ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */ @@ -1052,7 +1173,7 @@ ROM_START( tm4k ) ROM_LOAD16_BYTE( "tm4k_v602.u51", 0x000000, 0x100000, CRC(3d8d7848) SHA1(31638f23cdd5e6cfbb2270e953f84fe1bd437950) ) /* TOUCHMASTER 4000 U51 DOMESTIC 6.02 (Standard 4-14-98) */ ROM_LOAD16_BYTE( "tm4k_v602.u52", 0x000001, 0x100000, CRC(6d412871) SHA1(ae27c7723b292daf6682c53bafac22e4a3cd1ece) ) /* TOUCHMASTER 4000 U52 DOMESTIC 6.02 (Standard 4-14-98) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm4k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Mask rom labeled 5341-15746-03 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm4k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Mask rom labeled 5341-15746-01 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm4k_graphic.u39", 0x200000, 0x100000, CRC(bac88cfb) SHA1(26ed169296b890c5f5b50c418c15299355a6592f) ) /* Mask rom labeled 5341-15746-04 U39 VIDEO IMAGE */ @@ -1097,7 +1218,7 @@ ROM_START( tm5k ) 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) */ 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) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */ @@ -1114,7 +1235,7 @@ ROM_START( tm5kca ) /* California only version */ 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) */ 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) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */ @@ -1131,7 +1252,7 @@ ROM_START( tm5ka ) 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) */ 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) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm5k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-15951-07 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-15951-06 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm5k_graphic.u39", 0x200000, 0x100000, CRC(1349fdc7) SHA1(5118983be584455320f0d6006133f38e6a8ee0d8) ) /* Mask rom labeled 5341-15951-05 U39 VIDEO IMAGE */ @@ -1179,7 +1300,7 @@ ROM_START( tm7k ) ROM_LOAD16_BYTE( "tm7k_v804.u51", 0x000000, 0x100000, CRC(2461af04) SHA1(9cf37c04db0297ff8f9f316fd476d6d5d1c39acf) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */ ROM_LOAD16_BYTE( "tm7k_v804.u52", 0x000001, 0x100000, CRC(5d39fad2) SHA1(85e8d110b88e1099117ab7963eaee47dc86ec7c5) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.04 (Standard 06/02/99) (orange label) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Mask rom labeled 5341-16262-07 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Mask rom labeled 5341-16262-06 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Mask rom labeled 5341-16262-05 U39 VIDEO IMAGE */ @@ -1196,7 +1317,7 @@ ROM_START( tm7ka ) ROM_LOAD16_BYTE( "tm7k_v800.u51", 0x000000, 0x100000, CRC(83ec3da7) SHA1(37fa7183e7acc2eab35ac431d99cbbfe4862979e) ) /* TOUCHMASTER 7000 U51 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */ ROM_LOAD16_BYTE( "tm7k_v800.u52", 0x000001, 0x100000, CRC(e2004282) SHA1(aa73029f31e2062cabedfcd778db97b314624ae8) ) /* TOUCHMASTER 7000 U52 DOMESTIC 8.00 (Standard 03/26/99) (orange label) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* Labeled GRAPHIC U38 8.0 (orange label) */ ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* Labeled GRAPHIC U36 8.0 (orange label) */ ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* Labeled GRAPHIC U39 8.0 (orange label) */ @@ -1213,7 +1334,7 @@ ROM_START( tm7keval ) /* FREEPLAY ONLY / NOT FOR RELEASE / FOR EVALUATION ONLY * ROM_LOAD16_BYTE( "tm7k_v81x.u51", 0x000000, 0x100000, CRC(57c88287) SHA1(1008bbcd137ede321be4cc2ad22e3982d880471b) ) /* TOUCHMASTER 7000 U51 8.1X (ASI Standard 03/08/99) (white label) */ ROM_LOAD16_BYTE( "tm7k_v81x.u52", 0x000001, 0x100000, CRC(e45d69bb) SHA1(9e8a42924a9cd573cbd2f3164d0fb468eee7ff51) ) /* TOUCHMASTER 7000 U52 8.1X (ASI Standard 03/08/99) (white label) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm7k_graphic.u38", 0x000000, 0x100000, CRC(93038e7c) SHA1(448f69bf51ac992f6b35b471cba9675c67984cd7) ) /* TOUCHMASTER EDCE V8.X U38 (white label) */ ROM_LOAD16_BYTE( "tm7k_graphic.u36", 0x000001, 0x100000, CRC(5453a44a) SHA1(094439a56336ca933b0b7ede8c057546d1d490b2) ) /* TOUCHMASTER DB7F V8.X U36 (white label) */ ROM_LOAD16_BYTE( "tm7k_graphic.u39", 0x200000, 0x100000, CRC(26af8da8) SHA1(02555b1597a4962f1fd0c3ffc89e5c8338aa3085) ) /* TOUCHMASTER 2BB6 V8.X U39 (white label) */ @@ -1258,7 +1379,7 @@ ROM_START( tm8k ) ROM_LOAD16_BYTE( "tm8k_v904.u51", 0x000000, 0x100000, CRC(28864ec8) SHA1(e703f9ee350dd915102e784bbd04445a95b7d0a5) ) /* TOUCHMASTER 8000 U51 DOMESTIC 9.04 (Standard 04/25/00) */ ROM_LOAD16_BYTE( "tm8k_v904.u52", 0x000001, 0x100000, CRC(c123eec2) SHA1(3e9c84755b18a4fd900068f385ee47107771391d) ) /* TOUCHMASTER 8000 U52 DOMESTIC 9.04 (Standard 04/25/00) */ - ROM_REGION( 0x600000, "gfx1", 0 ) // Blitter gfx + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx ROM_LOAD16_BYTE( "tm8k_graphic.u38", 0x000000, 0x100000, CRC(2a971d46) SHA1(6ca4067e9fa40053df415e670b2e853915319dbb) ) /* Mask rom labeled 5341-16513-07 U38 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm8k_graphic.u36", 0x000001, 0x100000, CRC(3bde285e) SHA1(87bf60034665542fb0240b7479adfffb7ba9fad7) ) /* Mask rom labeled 5341-16513-06 U36 VIDEO IMAGE */ ROM_LOAD16_BYTE( "tm8k_graphic.u39", 0x200000, 0x100000, CRC(58c6c1d8) SHA1(cc11863c4ea46bde7ea4775075f4328be6d6c6d1) ) /* Mask rom labeled 5341-16513-05 U39 VIDEO IMAGE */ @@ -1283,8 +1404,8 @@ More information here : http://www.cesgames.com/museum/galaxy/index.html ---- -Board silkscreend 237-0211-00 - REV.-D +Board silkscreened 237-0211-00 + REV.-D Cartridge based mother board Holds up to 4 cartridges @@ -1292,8 +1413,6 @@ Chips labeled GALAXY U1 V1.90 12/1/98 GALAXY U2 V1.90 12/1/98 -NAMCO 307 Cartridge has surface mount Flash chips in it (not dumped). - Motorola MC68HC000FN12 24 MHz oscillator Xilinx XC5206 @@ -1310,20 +1429,63 @@ PAL16V8H-15 @ U45 red dot on it ***************************************************************************/ -ROM_START( galgbios ) - ROM_REGION( 0x200000 + 0x40000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "galaxy.u2", 0x1c0000, 0x020000, CRC(e51ff184) SHA1(aaa795f2c15ec29b3ceeb5c917b643db0dbb7083) ) - ROM_CONTINUE( 0x000000, 0x0e0000 ) - ROM_LOAD16_BYTE( "galaxy.u1", 0x1c0001, 0x020000, CRC(c6d7bc6d) SHA1(93c032f9aa38cbbdda59a8a25ff9f38f7ad9c760) ) - ROM_CONTINUE( 0x000001, 0x0e0000 ) - ROM_FILL( 0x200000, 0x040000, 0) // RAM +#define GALGAMES_BIOS_ROMS \ + ROM_SYSTEM_BIOS( 0, "0", "v1.90" ) \ + ROMX_LOAD( "galaxy.u2", 0x000000, 0x100000, CRC(e51ff184) SHA1(aaa795f2c15ec29b3ceeb5c917b643db0dbb7083), ROM_SKIP(1) | ROM_BIOS(1) ) \ + ROMX_LOAD( "galaxy.u1", 0x000001, 0x100000, CRC(c6d7bc6d) SHA1(93c032f9aa38cbbdda59a8a25ff9f38f7ad9c760), ROM_SKIP(1) | ROM_BIOS(1) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "galaxy.u2", 0x000000, 0x100000, CRC(e51ff184) SHA1(aaa795f2c15ec29b3ceeb5c917b643db0dbb7083) ) - ROM_LOAD16_BYTE( "galaxy.u1", 0x000001, 0x100000, CRC(c6d7bc6d) SHA1(93c032f9aa38cbbdda59a8a25ff9f38f7ad9c760) ) +#define GALGAMES_MB_PALS \ + ROM_REGION( 0xa00, "pals", 0) \ + ROM_LOAD( "16v8h-blue.u24", 0x000, 0x117, NO_DUMP ) \ + ROM_LOAD( "16v8h-yellow.u25", 0x200, 0x117, NO_DUMP ) \ + ROM_LOAD( "16v8h-magenta.u26", 0x400, 0x117, NO_DUMP ) \ + ROM_LOAD( "16v8h-green.u27", 0x600, 0x117, NO_DUMP ) \ + ROM_LOAD( "16v8h-red.u45", 0x800, 0x117, NO_DUMP ) + +ROM_START( galgbios ) + ROM_REGION( 0x200000, "maincpu", 0 ) + GALGAMES_BIOS_ROMS + + ROM_REGION( 0x200000, "blitter", 0 ) + ROM_COPY( "maincpu", 0, 0, 0x200000 ) + + ROM_REGION( 0x40000, "oki", ROMREGION_ERASE ) + // RAM, filled by the 68000 and fed to the OKI + + GALGAMES_MB_PALS +ROM_END + +/*************************************************************************** + +Galaxy Games StarPak 2 + +NAMCO 307 Cartridge, has surface mount Flash chips in it: + +.u1 am29f800BB +.u2 am29f800BB +.u4 pic 12c508 + +Board silkscreened 237-0209-00 + REV.-C + +***************************************************************************/ + +ROM_START( galgame2 ) + ROM_REGION( 0x200000 * 2, "maincpu", 0 ) + GALGAMES_BIOS_ROMS + ROM_LOAD16_BYTE( "namco.u2", 0x200000, 0x100000, CRC(f43c0c54) SHA1(4a13946c3d173b0e4ab25b01849574fa3302b417) ) + ROM_LOAD16_BYTE( "namco.u1", 0x200001, 0x100000, CRC(b8c34a8b) SHA1(40d3b35f573d2bd2ae1c7d876c55fc436864fa3f) ) + + ROM_REGION( 0x9db, "pic", 0 ) + ROM_LOAD( "namco.u4", 0x000, 0x9db, CRC(63ec1224) SHA1(2966b2aa431e6b8d46cbba18a6fc4de7395caa04) ) + + ROM_REGION( 0x200000 * 2, "blitter", 0 ) + ROM_COPY( "maincpu", 0, 0, 0x200000 * 2 ) ROM_REGION( 0x40000, "oki", ROMREGION_ERASE ) // RAM, filled by the 68000 and fed to the OKI + + GALGAMES_MB_PALS ROM_END @@ -1498,25 +1660,70 @@ Protection starts: static DRIVER_INIT( galgames ) { - UINT8 *ROM = memory_region(machine, "maincpu"); - // configure memory banks - memory_configure_bank(machine, 1, 0, 2, ROM+0x1c0000, 0x40000); - memory_configure_bank(machine, 3, 0, 2, ROM+0x1c0000, 0x40000); + UINT8 *ROM = memory_region(machine, "maincpu"); + int cart; - memory_configure_bank(machine, 2, 0, 1, ROM+0x200000, 0x40000); - memory_configure_bank(machine, 4, 0, 1, ROM+0x200000, 0x40000); + // RAM bank at 0x000000-0x03ffff and 0x200000-0x23ffff + // ROM bank at 0x000000-0x1fffff and 0x200000-0x3fffff (bios) + + memory_configure_bank(machine, GALGAMES_BANK_000000_R, GALGAMES_RAM, 1, galgames_ram, 0x40000); + memory_configure_bank(machine, GALGAMES_BANK_000000_R, GALGAMES_ROM0, 1, ROM+0x000000, 0x40000); + + memory_configure_bank(machine, GALGAMES_BANK_000000_W, GALGAMES_RAM, 1, galgames_ram, 0x40000); + + memory_configure_bank(machine, GALGAMES_BANK_200000_R, GALGAMES_RAM, 1, galgames_ram, 0x40000); + memory_configure_bank(machine, GALGAMES_BANK_200000_R, GALGAMES_ROM0, 1, ROM+0x000000, 0x40000); + + memory_configure_bank(machine, GALGAMES_BANK_200000_W, GALGAMES_RAM, 1, galgames_ram, 0x40000); + + memory_configure_bank(machine, GALGAMES_BANK_240000_R, GALGAMES_ROM0, 1, ROM+0x040000, 0x1c0000); + + // More ROM banks at 0x200000-0x3fffff (carts) + + for (cart = 1; cart <= 4; cart++) + { + UINT8 *CART = memory_region(machine, "maincpu"); + + if (0x200000 * (cart+1) <= memory_region_length(machine, "maincpu")) + CART += 0x200000 * cart; + + memory_configure_bank(machine, GALGAMES_BANK_200000_R, GALGAMES_ROM0+cart, 1, CART, 0x40000); + memory_configure_bank(machine, GALGAMES_BANK_240000_R, GALGAMES_ROM0+cart, 1, CART+0x040000, 0x1c0000); + } } -GAME( 1996, tm, 0, tm, tm, 0, ROT0, "Midway", "Touchmaster (v3.00 Euro)", 0 ) -GAME( 1996, tm2k, 0, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 2000 (v4.02 Standard)", 0 ) -GAME( 1997, tm3k, 0, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 3000 (v5.02 Standard)", 0 ) -GAME( 1997, tm3ka, tm3k, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 3000 (v5.01 Standard)", 0 ) -GAME( 1998, tm4k, 0, tm3k, tmaster, tm4k, ROT0, "Midway", "Touchmaster 4000 (v6.02 Standard)", 0 ) -GAME( 1998, tm5k, 0, tm3k, tmaster, tm5k, ROT0, "Midway", "Touchmaster 5000 (v7.10 Standard)", 0 ) -GAME( 1998, tm5kca, tm5k, tm3k, tmaster, tm5kca, ROT0, "Midway", "Touchmaster 5000 (v7.10 California)", 0 ) -GAME( 1998, tm5ka, tm5k, tm3k, tmaster, tm5ka, ROT0, "Midway", "Touchmaster 5000 (v7.01 Standard)", 0 ) -GAME( 1999, tm7k, 0, tm3k, tmaster, tm7k, ROT0, "Midway", "Touchmaster 7000 (v8.04 Standard)", 0 ) -GAME( 1999, tm7ka, tm7k, tm3k, tmaster, tm7ka, ROT0, "Midway", "Touchmaster 7000 (v8.00 Standard)", 0 ) -GAME( 1999, tm7keval, tm7k, tm3k, tmaster, tm7keval, ROT0, "Midway", "Touchmaster 7000 (v8.1X Evaluation)", 0 ) -GAME( 2000, tm8k, 0, tm3k, tmaster, tm8k, ROT0, "Midway", "Touchmaster 8000 (v9.04 Standard)", 0 ) -GAME( 1998, galgbios, 0, galgames, galgames, galgames, ROT0, "Creative Electonics & Software", "Galaxy Games (BIOS v1.90)", GAME_IS_BIOS_ROOT ) +static DRIVER_INIT( galgame2 ) +{ + UINT16 *ROM = (UINT16 *)memory_region( machine, "maincpu" ); + + // Patch BIOS to see the game code as first cartridge (until the PIC therein is emulated) + ROM[0x118da/2] = 0x4a06; + ROM[0x118dc/2] = 0x6704; + ROM[0x118de/2] = 0x7000; + ROM[0x118e0/2] = 0x6002; + ROM[0x118e2/2] = 0x7001; + ROM[0x118e4/2] = 0x4e71; + ROM[0x118e6/2] = 0x4e71; + ROM[0x118e8/2] = 0x4e71; + + // Cartdridge check on game selection screen + ROM[0x12da0/2] = 0x4e71; + + DRIVER_INIT_CALL( galgames ); +} + + +GAME( 1996, tm, 0, tm, tm, 0, ROT0, "Midway", "Touchmaster (v3.00 Euro)", 0 ) +GAME( 1996, tm2k, 0, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 2000 (v4.02 Standard)", 0 ) +GAME( 1997, tm3k, 0, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 3000 (v5.02 Standard)", 0 ) +GAME( 1997, tm3ka, tm3k, tm3k, tmaster, 0, ROT0, "Midway", "Touchmaster 3000 (v5.01 Standard)", 0 ) +GAME( 1998, tm4k, 0, tm3k, tmaster, tm4k, ROT0, "Midway", "Touchmaster 4000 (v6.02 Standard)", 0 ) +GAME( 1998, tm5k, 0, tm3k, tmaster, tm5k, ROT0, "Midway", "Touchmaster 5000 (v7.10 Standard)", 0 ) +GAME( 1998, tm5kca, tm5k, tm3k, tmaster, tm5kca, ROT0, "Midway", "Touchmaster 5000 (v7.10 California)", 0 ) +GAME( 1998, tm5ka, tm5k, tm3k, tmaster, tm5ka, ROT0, "Midway", "Touchmaster 5000 (v7.01 Standard)", 0 ) +GAME( 1999, tm7k, 0, tm3k, tmaster, tm7k, ROT0, "Midway", "Touchmaster 7000 (v8.04 Standard)", 0 ) +GAME( 1999, tm7ka, tm7k, tm3k, tmaster, tm7ka, ROT0, "Midway", "Touchmaster 7000 (v8.00 Standard)", 0 ) +GAME( 1999, tm7keval, tm7k, tm3k, tmaster, tm7keval, ROT0, "Midway", "Touchmaster 7000 (v8.1X Evaluation)", 0 ) +GAME( 2000, tm8k, 0, tm3k, tmaster, tm8k, ROT0, "Midway", "Touchmaster 8000 (v9.04 Standard)", 0 ) +GAME( 1998, galgbios, 0, galgames, galgames, galgames, ROT0, "Creative Electronics & Software", "Galaxy Games (BIOS v1.90)", GAME_IS_BIOS_ROOT ) +GAME( 1998, galgame2, galgbios, galgame2, galgames, galgame2, ROT0, "Creative Electronics & Software / Namco", "Galaxy Games StarPak 2", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index a646bc17daa..46ca75938a3 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -6849,7 +6849,8 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11 DRIVER( tm7ka ) /* (c) 1999 Midway Games */ DRIVER( tm7keval ) /* (c) 1999 Midway Games */ DRIVER( tm8k ) /* (c) 2000 Midway Games */ - DRIVER( galgbios ) /* (c) 1998 Creative Electonics & Software (CES) */ + DRIVER( galgbios ) /* (c) 1998 Creative Electronics & Software (CES) */ + DRIVER( galgame2 ) /* (c) 1998 Creative Electronics & Software (CES) / Namco */ /* Cinematronics raster games */ DRIVER( embargo )