summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-10-20 15:34:27 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-10-20 15:34:27 +0000
commit13ad68bca4ed4014717f02c625fa0eef6c4b2a59 (patch)
tree66bd350a8a0a99f73029bf1466c7e07a3f2eaff0
parentf7c8307f90f62312560d589dd93e0b094b1f4cee (diff)
New games added: Grudge Match (Yankee Game Technology)
Yet another 8-bit Incredible Technologies board. Different in several significant ways from previous models: * YM2608B for audio, replacing YM3812+OKI6295 * TMS34070 for palettes instead of PC RAMDAC * Different video memory layout
-rw-r--r--src/emu/video/tms34061.c6
-rw-r--r--src/mame/drivers/itech8.c259
-rw-r--r--src/mame/includes/itech8.h5
-rw-r--r--src/mame/mamedriv.c1
-rw-r--r--src/mame/video/itech8.c106
5 files changed, 334 insertions, 43 deletions
diff --git a/src/emu/video/tms34061.c b/src/emu/video/tms34061.c
index 8f6919b02cc..bccbdecf932 100644
--- a/src/emu/video/tms34061.c
+++ b/src/emu/video/tms34061.c
@@ -86,6 +86,8 @@ void tms34061_start(running_machine *machine, const struct tms34061_interface *i
/* allocate memory for VRAM */
tms34061.vram = auto_malloc(tms34061.intf.vramsize + 256 * 2);
memset(tms34061.vram, 0, tms34061.intf.vramsize + 256 * 2);
+ /* not really a save state, just there for debugging purposes */
+ state_save_register_global_pointer(tms34061.vram, tms34061.intf.vramsize);
/* allocate memory for latch RAM */
tms34061.latchram = auto_malloc(tms34061.intf.vramsize + 256 * 2);
@@ -369,6 +371,7 @@ static void xypixel_w(int offset, UINT8 data)
/* mask to the VRAM size */
pixeloffs &= tms34061.vrammask;
+ if (VERBOSE) logerror("%04X:tms34061 xy (%04x) = %02x/%02x\n", activecpu_get_pc(), pixeloffs, data, tms34061.latchdata);
/* set the pixel data */
tms34061.vram[pixeloffs] = data;
@@ -424,6 +427,7 @@ void tms34061_w(int col, int row, int func, UINT8 data)
offs = ((row << tms34061.intf.rowshift) | col) & tms34061.vrammask;
if (tms34061.regs[TMS34061_CONTROL2] & 0x0040)
offs |= (tms34061.regs[TMS34061_CONTROL2] & 3) << 16;
+ if (VERBOSE) logerror("%04X:tms34061 direct (%04x) = %02x/%02x\n", activecpu_get_pc(), offs, data, tms34061.latchdata);
if (tms34061.vram[offs] != data || tms34061.latchram[offs] != tms34061.latchdata)
{
tms34061.vram[offs] = data;
@@ -437,6 +441,7 @@ void tms34061_w(int col, int row, int func, UINT8 data)
if (tms34061.regs[TMS34061_CONTROL2] & 0x0040)
offs |= (tms34061.regs[TMS34061_CONTROL2] & 3) << 16;
offs &= tms34061.vrammask;
+ if (VERBOSE) logerror("%04X:tms34061 shiftreg write (%04x)\n", activecpu_get_pc(), offs);
memcpy(&tms34061.vram[offs], tms34061.shiftreg, (size_t)1 << tms34061.intf.rowshift);
memset(&tms34061.latchram[offs], tms34061.latchdata, (size_t)1 << tms34061.intf.rowshift);
@@ -448,6 +453,7 @@ void tms34061_w(int col, int row, int func, UINT8 data)
if (tms34061.regs[TMS34061_CONTROL2] & 0x0040)
offs |= (tms34061.regs[TMS34061_CONTROL2] & 3) << 16;
offs &= tms34061.vrammask;
+ if (VERBOSE) logerror("%04X:tms34061 shiftreg read (%04x)\n", activecpu_get_pc(), offs);
tms34061.shiftreg = &tms34061.vram[offs];
break;
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index 48b2460b3eb..bb8139fe8f9 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -9,6 +9,7 @@
* Strata Bowling [2 sets]
* Super Strike Bowling
* Wheel of Fortune [2 sets]
+ * Grudge Match
* Golden Tee Golf [2 sets]
* Golden Tee Golf II [3 sets]
* Slick Shot [3 sets]
@@ -143,7 +144,7 @@
Summary:
- There are 7 known variants of PCBs for these games. All the PCBs
+ There are 8 known variants of PCBs for these games. All the PCBs
have the following features in common:
68B09 @ 2 MHz for the main CPU
@@ -151,21 +152,26 @@
68B09 @ 2 MHz for the sound CPU
2k RAM for the sound CPU
- YM2203C or YM3812 for music
- OKI M6295 for speech
+ YM2203C, YM2608B or YM3812 for music
+ OKI M6295 for speech (except for YM2608B-based system)
TMS34061 for the video controller
ITV4400 custom blitter for rendering
- 6-bit RAMDAC for palette
+ 6-bit RAMDAC for palette, or 2xTMS34070NL (Grudge Match only)
From 2-8 64k x 4-bit VRAM chips for frame buffers
An overview of each style PCB is given below:
- Wheel of Fortune-style
+ Wheel Watcher (Wheel of Fortune)-style
* Single board
* YM2203C for music
* 2 VRAM chips for a single 8-bit 256x256 video page
+ Grudge Match-style
+ * Single board
+ * YM2608B for music
+ * 4 VRAM chips for two 4-bit 512x256 layers
+
Strata Bowling-style
* Single board
* YM2203C for music
@@ -202,9 +208,9 @@
****************************************************************************
- ----------------
- Wheel of Fortune
- ----------------
+ --------------------------------
+ Wheel Watcher (Wheel of Fortune)
+ --------------------------------
+------------------------------------+-+
| Bt476KP35 | |
@@ -240,6 +246,44 @@
ITV4400 = IT custom blitter
+ -------------
+ Grudge Match
+ ------------
+
+ +------------------------------------+-+
+ | TMS34070NL | |
+ | TMS34070NL DIPSW4 | |
+ | TMS4461-15 8MHz | |
+ | TMS4461-15 | |
+ | TMS4461-15 | |
+ | TMS4461-15 | |
+ | | |
+ | TMS34061 +-
+ | |
+ | ITV4400 |
+ | GROM6 SROM0 |
+ | GROM5 |
+ | GROM4 |
+ | GROM3 MK40702B-20 YM2608B |
+ | GROM2 U5-PGM MK6116 |
+ | GROM1 U27-SND |
+ | GROM0 |
+ | MC68B09 MC68B09 |
+ +--------------------------------------+
+
+ GROM0-3 = AM27C010-25
+ U5-PGM = D27512-25
+ U27-SND = 27C256-20
+ SROM0 = AM27C010-25
+ ITVS = ???
+ MT42C4064Z = 64k x 4 VRAM (2 populated on Wheel of Fortune)
+ MK40702B = zero-power RAM
+ MK6116 = 2k x 8 RAM
+ TMS34070NL = 16-color RAMDAC
+ TMS34061 = video controller
+ ITV4400 = IT custom blitter
+
+
------------------------------
Strata Bowling/Golden Tee Golf
------------------------------
@@ -459,6 +503,7 @@
#include "video/tlc34076.h"
#include "itech8.h"
#include "sound/2203intf.h"
+#include "sound/2608intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
@@ -944,6 +989,19 @@ static ADDRESS_MAP_START( sound2203_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
+/*------ YM2608B-based sound ------*/
+static ADDRESS_MAP_START( sound2608b_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x1000, 0x1000) AM_WRITENOP
+ AM_RANGE(0x2000, 0x2000) AM_READ(sound_data_r)
+ AM_RANGE(0x4000, 0x4000) AM_READWRITE(ym2608_status_port_0_a_r, ym2608_control_port_0_a_w)
+ AM_RANGE(0x4001, 0x4001) AM_WRITE(ym2608_data_port_0_a_w)
+ AM_RANGE(0x4002, 0x4002) AM_READWRITE(ym2608_status_port_0_b_r, ym2608_control_port_0_b_w)
+ AM_RANGE(0x4003, 0x4003) AM_WRITE(ym2608_data_port_0_b_w)
+ AM_RANGE(0x6000, 0x67ff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
/*------ YM3812-based sound ------*/
static ADDRESS_MAP_START( sound3812_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0000) AM_WRITENOP
@@ -1024,6 +1082,44 @@ static INPUT_PORTS_START( wfortune )
INPUT_PORTS_END
+static INPUT_PORTS_START( grmatch )
+ PORT_START("40")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(special_r, NULL) /* input from sound board */
+ PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME( 0x08, 0x08, "Adjustments Lockout" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x20, "1" )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
+
+ PORT_START("60")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+
+ PORT_START("80")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( stratab )
PORT_START("40")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(special_r, NULL) /* input from sound board */
@@ -1615,6 +1711,20 @@ static const ym2203_interface ym2203_config =
};
+static const ym2608_interface ym2608b_config =
+{
+ {
+ AY8910_LEGACY_OUTPUT,
+ AY8910_DEFAULT_LOADS,
+ NULL,
+ NULL,
+ NULL,
+ ym2203_portb_out,
+ },
+ generate_sound_irq
+};
+
+
static const ym3812_interface ym3812_config =
{
generate_sound_irq
@@ -1652,10 +1762,6 @@ static MACHINE_DRIVER_START( itech8_core_lo )
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
-
- MDRV_SOUND_ADD("oki", OKIM6295, CLOCK_8MHz/8) // was /128??
- MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // was /128, not /132, so unsure so pin 7 not verified
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_DRIVER_END
@@ -1681,6 +1787,23 @@ static MACHINE_DRIVER_START( itech8_sound_ym2203 )
MDRV_SOUND_ROUTE(1, "mono", 0.07)
MDRV_SOUND_ROUTE(2, "mono", 0.07)
MDRV_SOUND_ROUTE(3, "mono", 0.75)
+
+ MDRV_SOUND_ADD("oki", OKIM6295, CLOCK_8MHz/8) // was /128??
+ MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // was /128, not /132, so unsure so pin 7 not verified
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_DRIVER_END
+
+
+static MACHINE_DRIVER_START( itech8_sound_ym2608b )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD("sound", M6809, CLOCK_8MHz/4)
+ MDRV_CPU_PROGRAM_MAP(sound2608b_map,0)
+
+ /* sound hardware */
+ MDRV_SOUND_ADD("ym", YM2608, CLOCK_8MHz)
+ MDRV_SOUND_CONFIG(ym2608b_config)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_DRIVER_END
@@ -1694,6 +1817,10 @@ static MACHINE_DRIVER_START( itech8_sound_ym3812 )
MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2)
MDRV_SOUND_CONFIG(ym3812_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+
+ MDRV_SOUND_ADD("oki", OKIM6295, CLOCK_8MHz/8) // was /128??
+ MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // was /128, not /132, so unsure so pin 7 not verified
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_DRIVER_END
@@ -1707,6 +1834,10 @@ static MACHINE_DRIVER_START( itech8_sound_ym3812_external )
MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2)
MDRV_SOUND_CONFIG(ym3812_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+
+ MDRV_SOUND_ADD("oki", OKIM6295, CLOCK_8MHz/8) // was /128??
+ MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // was /128, not /132, so unsure so pin 7 not verified
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_DRIVER_END
@@ -1725,6 +1856,22 @@ static MACHINE_DRIVER_START( wfortune )
MACHINE_DRIVER_END
+static MACHINE_DRIVER_START( grmatch )
+
+ /* basic machine hardware */
+ MDRV_IMPORT_FROM(itech8_core_hi)
+ MDRV_IMPORT_FROM(itech8_sound_ym2608b)
+
+ /* video hardware */
+ MDRV_SCREEN_MODIFY("main")
+ MDRV_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
+ MDRV_VIDEO_UPDATE(itech8_grmatch)
+
+ /* palette updater */
+ MDRV_TIMER_ADD_SCANLINE("palette", grmatch_palette_update, "main", 0, 0)
+MACHINE_DRIVER_END
+
+
static MACHINE_DRIVER_START( stratab_hi )
/* basic machine hardware */
@@ -1896,7 +2043,7 @@ ROM_START( wfortune )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "wofsnd", 0x08000, 0x8000, CRC(0a6aa5dc) SHA1(42eef40a4300d6d16d9e2af678432a02be05f104) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "wofgrom0", 0x00000, 0x10000, CRC(9a157b2c) SHA1(c349b41ba00cf6e2fec32872627c8cfdd8b5c1b9) )
ROM_LOAD( "wofgrom1", 0x10000, 0x10000, CRC(5064739b) SHA1(424e3f94333f8ca21ac39b64b684cf6b487164d3) )
ROM_LOAD( "wofgrom2", 0x20000, 0x10000, CRC(3d393b2b) SHA1(2c94d2dab7369c099c470cf96391b033f39add78) )
@@ -1916,7 +2063,7 @@ ROM_START( wfortuna )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "wofsnd", 0x08000, 0x8000, CRC(0a6aa5dc) SHA1(42eef40a4300d6d16d9e2af678432a02be05f104) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "wofgrom0", 0x00000, 0x10000, CRC(9a157b2c) SHA1(c349b41ba00cf6e2fec32872627c8cfdd8b5c1b9) )
ROM_LOAD( "wofgrom1", 0x10000, 0x10000, CRC(5064739b) SHA1(424e3f94333f8ca21ac39b64b684cf6b487164d3) )
ROM_LOAD( "wofgrom2", 0x20000, 0x10000, CRC(3d393b2b) SHA1(2c94d2dab7369c099c470cf96391b033f39add78) )
@@ -1927,6 +2074,29 @@ ROM_START( wfortuna )
ROM_END
+ROM_START( grmatch )
+ ROM_REGION( 0x1c000, "main", 0 )
+ ROM_LOAD( "grudgematch.u5", 0x04000, 0x4000, CRC(11cadec9) SHA1(e21df623d1311ea63bafa2d6d0d94eb7d13232da) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+ ROM_COPY( "main", 0x14000, 0x8000, 0x8000 )
+
+ ROM_REGION( 0x10000, "sound", 0 )
+ ROM_LOAD( "grudgematch.u27", 0x08000, 0x8000, CRC(59c18e63) SHA1(0d00c9cc683ff17e3213ba343ae65d533b57a243) )
+
+ ROM_REGION( 0xe0000, "grom", 0 )
+ ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(9064eff9) SHA1(4c80432ef359266c43b4691b503f529ed018a655) )
+ ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(6919c314) SHA1(e4a7ca77ee27ea8e41a236806e689c964d981210) )
+ ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(36b1682c) SHA1(6098b8aa576522c3cea66b5ac8f9406bf4222008) )
+ ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(7bf05f61) SHA1(269e1cacf319d9f2a2b865ac6573e690f36827a1) )
+ ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(55bded89) SHA1(61e0c60e391327a5fdda704c7756fcd6e11253c5) )
+ ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(37b47b2e) SHA1(352204d3e95e6db556aacf053c42d0d5871245a7) )
+ ROM_LOAD( "grom6.bin", 0xc0000, 0x20000, CRC(860ee822) SHA1(2ca821c2fa220065b99b99b7487fe9666f338c75) )
+
+ ROM_REGION( 0x20000, "ym", 0 )
+ ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(49bce954) SHA1(68a8b11c03722349d673f7383288c63054f0d6f6) )
+ROM_END
+
+
ROM_START( stratab )
ROM_REGION( 0x1c000, "main", 0 )
ROM_LOAD( "sbprogv3.bin", 0x08000, 0x8000, CRC(a5ae728f) SHA1(85098eef1614d5148e8082df4c936883662292ee) )
@@ -1935,7 +2105,7 @@ ROM_START( stratab )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sbsnds.bin", 0x08000, 0x8000, CRC(b36c8f0a) SHA1(c4c3edf3352d95561f76705087338c1946137447) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a915b0bd) SHA1(0955c7ebb48e97ccffc18c5deec6eccce1d68de8) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(340c661f) SHA1(150f9158fa6d956d08051c67c17723b1d8c66867) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(5df9f1cf) SHA1(cad87f63ac0e902dffeeaa42538fc73f792d87d9) )
@@ -1953,7 +2123,7 @@ ROM_START( stratab1 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sbsnds.bin", 0x08000, 0x8000, CRC(b36c8f0a) SHA1(c4c3edf3352d95561f76705087338c1946137447) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a915b0bd) SHA1(0955c7ebb48e97ccffc18c5deec6eccce1d68de8) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(340c661f) SHA1(150f9158fa6d956d08051c67c17723b1d8c66867) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(5df9f1cf) SHA1(cad87f63ac0e902dffeeaa42538fc73f792d87d9) )
@@ -1972,7 +2142,7 @@ ROM_START( gtg )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(358d2440) SHA1(7b09350c89f9d2c86dc187d8812bbf26b576a38f) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(b52a23f6) SHA1(092961acf47875179b44342e2dd8955670e67ea2) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(9b8e3a61) SHA1(1b5682b1328d6c97b604fb71512e8f72322a688f) )
@@ -1994,7 +2164,7 @@ ROM_START( gtgt )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "snd-u27.256", 0x08000, 0x8000, CRC(471da557) SHA1(32bfe450a42d9eb6c14edcfa2b4e33f65a11126e) )
- ROM_REGION( 0xb0000, "gfx1", 0 )
+ ROM_REGION( 0xb0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(b52a23f6) SHA1(092961acf47875179b44342e2dd8955670e67ea2) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(9b8e3a61) SHA1(1b5682b1328d6c97b604fb71512e8f72322a688f) )
@@ -2017,7 +2187,7 @@ ROM_START( gtg2t )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(dd2a5905) SHA1(dc93f13de3953852a6757361eb9683a57d3ed326) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
@@ -2042,7 +2212,7 @@ ROM_START( gtg2j )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(dd2a5905) SHA1(dc93f13de3953852a6757361eb9683a57d3ed326) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
@@ -2073,7 +2243,7 @@ ROM_START( slikshot )
ROM_CONTINUE( 0x00000, 0x0800 )
ROM_CONTINUE( 0x00000, 0x0800 )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(e60c2804) SHA1(e62d11b6c4439a70a2f32df72c8c64e2f110351e) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(d764d542) SHA1(43fc0c9b627484a670d87da91e212741b137e995) )
@@ -2097,7 +2267,7 @@ ROM_START( sliksh17 )
ROM_CONTINUE( 0x00000, 0x0800 )
ROM_CONTINUE( 0x00000, 0x0800 )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(e60c2804) SHA1(e62d11b6c4439a70a2f32df72c8c64e2f110351e) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(d764d542) SHA1(43fc0c9b627484a670d87da91e212741b137e995) )
@@ -2121,7 +2291,7 @@ ROM_START( sliksh16 )
ROM_CONTINUE( 0x00000, 0x0800 )
ROM_CONTINUE( 0x00000, 0x0800 )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "pool-grom.0", 0x00000, 0x10000, CRC(e6d0edc6) SHA1(5287a31bbdde1e4291d8e9e6b99d3aa12bfb6e18) )
ROM_LOAD( "pool-grom.1", 0x10000, 0x10000, CRC(5a071aa2) SHA1(9c5506e37625d213429b1231d457d7ce8a7a81ff) )
ROM_LOAD( "pool-grom.2", 0x20000, 0x10000, CRC(c0bdf4e0) SHA1(3b7c635375c5e5fddcbc1bd1b186c960081ec37e) )
@@ -2147,7 +2317,7 @@ ROM_START( dynobop )
ROM_CONTINUE( 0x00000, 0x0800 )
ROM_CONTINUE( 0x00000, 0x0800 )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "dynobop.gr0", 0x00000, 0x20000, CRC(3525a7a3) SHA1(fe0b08203c135d55507506936dc34e1503e4906b) )
ROM_LOAD( "dynobop.gr1", 0x20000, 0x20000, CRC(1544a232) SHA1(60bba76537c82887db8e38c6a87c528afdd385d0) )
@@ -2170,7 +2340,7 @@ ROM_START( sstrike )
ROM_CONTINUE( 0x00000, 0x0800 )
ROM_CONTINUE( 0x00000, 0x0800 )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "sstgrom0.bin", 0x00000, 0x20000, CRC(9cfb9849) SHA1(5aa860c0c6e3916ebdb8898ee44f633bf3347ca8) )
ROM_LOAD( "sstgrom1.bin", 0x20000, 0x20000, CRC(d9ea14e1) SHA1(4cddf3237c203b0a3f7ae770f85f1be35e9e1b78) )
ROM_LOAD( "sstgrom2.bin", 0x40000, 0x20000, CRC(dcd97bf7) SHA1(95361222ac58bf74539f2a7e80574bcd848c615e) )
@@ -2189,7 +2359,7 @@ ROM_START( pokrdice )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "pd-snd.bin", 0x08000, 0x8000, CRC(4925401c) SHA1(e35983bec4a0dd4cb1d942fd909790b1adeb415d) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "pd-grom0.bin", 0x00000, 0x20000, CRC(7c2573e7) SHA1(d6a2a16277ad854c66927d88c5617d05eefe1057) )
ROM_LOAD( "pd-grom1.bin", 0x20000, 0x20000, CRC(e7c06aeb) SHA1(4be54b078d886359bf6ed376019cc1f6f04f52d6) )
@@ -2207,7 +2377,7 @@ ROM_START( hstennis )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "tensnd.v1", 0x08000, 0x8000, CRC(f034a694) SHA1(3540e2edff2ce47504260ec856bab9b638d9260d) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(1e69ebae) SHA1(a32e2c2f4e4a527ae6b57adeccd2c4d2045ab5fe) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(4e6a22d5) SHA1(3c2d51dd874f61c0a557ea2c1968afa02d9bfc42) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(c0b643a9) SHA1(d240f703a55c39ce4a969612fbb9cd76e4b849ac) )
@@ -2231,7 +2401,7 @@ ROM_START( hstenn10 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "tensnd.v1", 0x08000, 0x8000, CRC(f034a694) SHA1(3540e2edff2ce47504260ec856bab9b638d9260d) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(1e69ebae) SHA1(a32e2c2f4e4a527ae6b57adeccd2c4d2045ab5fe) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(4e6a22d5) SHA1(3c2d51dd874f61c0a557ea2c1968afa02d9bfc42) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(c0b643a9) SHA1(d240f703a55c39ce4a969612fbb9cd76e4b849ac) )
@@ -2256,7 +2426,7 @@ ROM_START( arlingtn )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "ahrsnd11.bin", 0x08000, 0x8000, CRC(dec57dca) SHA1(21a8ead10b0434629f41f6b067c49b6622569a6c) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(5ef57fe5) SHA1(e877979e034a61968b432037501e25a302a17a9a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(6aca95c0) SHA1(da7a899bf0812a7af178e48b5a626ce56a836579) )
ROM_LOAD( "grom2.bin", 0x40000, 0x10000, CRC(6d6fde1b) SHA1(aaabc45d4b566be42e8d28d767e4771a96d9caae) )
@@ -2275,7 +2445,7 @@ ROM_START( peggle )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sound.u27", 0x08000, 0x8000, CRC(b99beb70) SHA1(8d82c3b081a1afb236afa658abb3aa605c6c2264) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(5c02348d) SHA1(c85352728d94b3a5ca78c2493e98bdb4b3206bed) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(85a7a3a2) SHA1(7fb7be67c75867fcccf4272f1ce42f2af94c16e6) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(bfe11f18) SHA1(5e8d36c6a86a8eb883f50620fbfcea3d8398faeb) )
@@ -2294,7 +2464,7 @@ ROM_START( pegglet )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sound.u27", 0x08000, 0x8000, CRC(b99beb70) SHA1(8d82c3b081a1afb236afa658abb3aa605c6c2264) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(5c02348d) SHA1(c85352728d94b3a5ca78c2493e98bdb4b3206bed) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(85a7a3a2) SHA1(7fb7be67c75867fcccf4272f1ce42f2af94c16e6) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(bfe11f18) SHA1(5e8d36c6a86a8eb883f50620fbfcea3d8398faeb) )
@@ -2314,7 +2484,7 @@ ROM_START( neckneck )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "nn_snd10.u27", 0x08000, 0x8000, CRC(74771b2f) SHA1(0a963d2962699bb1b4d08bd486979151d0a228da) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "nn_grom0.bin", 0x00000, 0x20000, CRC(064d1464) SHA1(4ce5bcadad93586c9af2b0c499d7a7140b080cdb) )
ROM_LOAD( "nn_grom1.bin", 0x20000, 0x20000, CRC(622d9a0b) SHA1(f084dcf194cfc658f97f36972f2b2ff30e834fc5) )
ROM_LOAD( "nn_grom2.bin", 0x40000, 0x20000, CRC(e7eb4020) SHA1(29ceb535d1dfddf8c12cf78919ea10f6b956b8b3) )
@@ -2339,7 +2509,7 @@ ROM_START( rimrockn )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "grom", 0 )
ROM_LOAD( "grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
ROM_LOAD( "grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
ROM_LOAD( "grom02-2.st2", 0x80000, 0x40000, CRC(47904233) SHA1(6a4d10e8f7b75582f706a74b37d59788613ffc61) )
@@ -2369,7 +2539,7 @@ ROM_START( rimrck20 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "grom", 0 )
ROM_LOAD( "grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
ROM_LOAD( "grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
ROM_LOAD( "grom02-2.st2", 0x80000, 0x40000, CRC(47904233) SHA1(6a4d10e8f7b75582f706a74b37d59788613ffc61) )
@@ -2394,7 +2564,7 @@ ROM_START( rimrck16 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "grom", 0 )
ROM_LOAD( "grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
ROM_LOAD( "grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
ROM_LOAD( "grom02", 0x80000, 0x40000, CRC(34e567d5) SHA1(d0eb6fd0da8b9c3bfe7d4ecfb4bd903e4926b63a) )
@@ -2419,7 +2589,7 @@ ROM_START( rimrck12 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "rrbsndv1.u27", 0x08000, 0x8000, CRC(8eda5f53) SHA1(f256544a8c87125587719460ed0fef14efef9015) )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "grom", 0 )
ROM_LOAD( "grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
ROM_LOAD( "grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
ROM_LOAD( "grom02", 0x80000, 0x40000, CRC(34e567d5) SHA1(d0eb6fd0da8b9c3bfe7d4ecfb4bd903e4926b63a) )
@@ -2439,7 +2609,7 @@ ROM_START( ninclown )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "nc-snd", 0x08000, 0x8000, CRC(f9d5b4e1) SHA1(e5c3774db349b60baf11baecf55ac432871e612c) )
- ROM_REGION( 0x180000, "gfx1", 0 )
+ ROM_REGION( 0x180000, "grom", 0 )
ROM_LOAD( "nc-grom0", 0x000000, 0x40000, CRC(532f7bff) SHA1(cc7a64ad1581f37ff4bcad78c11aad355a6e9aa8) )
ROM_LOAD( "nc-grom1", 0x040000, 0x40000, CRC(45640d4a) SHA1(1b59ae2a74fef535c646586422f17b39c9ae247b) )
ROM_LOAD( "nc-grom2", 0x080000, 0x40000, CRC(c8281d06) SHA1(f75d4e858f9bc19e5234f184b75818e448638c15) )
@@ -2461,7 +2631,7 @@ ROM_START( gpgolf )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sndv1.u27", 0x08000, 0x8000, CRC(55734876) SHA1(eb5ef816acbc6e35642749e38a2908b7ba359b9d) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom00.bin", 0x00000, 0x40000, CRC(c3a7b54b) SHA1(414d693bc5337d578d2630817dd647cf7e5cbcf7) )
ROM_LOAD( "grom01.bin", 0x40000, 0x40000, BAD_DUMP CRC(2c834cf9) SHA1(49eb070ca4439d4fcd2d8a2db62d3c99b824bf99) ) /* Self test checksum reports BAD */
ROM_LOAD( "grom02.bin", 0x80000, 0x40000, CRC(aebe6c45) SHA1(15e64fcb36cb1064988ee5cd45699d501a6e7f01) )
@@ -2481,7 +2651,7 @@ ROM_START( gtg2 )
ROM_REGION( 0x10000, "sound", 0 )
ROM_LOAD( "sndv1.u27", 0x08000, 0x8000, CRC(55734876) SHA1(eb5ef816acbc6e35642749e38a2908b7ba359b9d) )
- ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_REGION( 0xc0000, "grom", 0 )
ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
@@ -2504,6 +2674,14 @@ ROM_END
*
*************************************/
+static DRIVER_INIT( grmatch )
+{
+ memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0160, 0x0160, 0, 0, grmatch_palette_w);
+ memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0180, 0x0180, 0, 0, grmatch_xscroll_w);
+ memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x01e0, 0x01ff, 0, 0, SMH_UNMAP);
+}
+
+
static DRIVER_INIT( slikshot )
{
memory_install_read8_handler (machine, 0, ADDRESS_SPACE_PROGRAM, 0x0180, 0x0180, 0, 0, slikshot_z80_r);
@@ -2574,6 +2752,9 @@ static DRIVER_INIT( rimrockn )
GAME( 1989, wfortune, 0, wfortune, wfortune, 0, ROT0, "GameTek", "Wheel Of Fortune", 0 )
GAME( 1989, wfortuna, wfortune, wfortune, wfortune, 0, ROT0, "GameTek", "Wheel Of Fortune (alternate)", 0 )
+/* Grudge Match-style PCB */
+GAME( 1989, grmatch, 0, grmatch, grmatch, grmatch, ROT0, "Yankee Game Technology", "Grudge Match (Yankee Game Technology)", 0 )
+
/* Strata Bowling-style PCB */
GAME( 1990, stratab, 0, stratab_hi, stratab, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 )
GAME( 1990, stratab1, stratab, stratab_hi, stratab, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1)", 0 )
diff --git a/src/mame/includes/itech8.h b/src/mame/includes/itech8.h
index 8e093b53e41..6ce2a95f49b 100644
--- a/src/mame/includes/itech8.h
+++ b/src/mame/includes/itech8.h
@@ -38,6 +38,11 @@ WRITE8_HANDLER( itech8_blitter_w );
WRITE8_HANDLER( itech8_tms34061_w );
READ8_HANDLER( itech8_tms34061_r );
+WRITE8_HANDLER( grmatch_palette_w );
+WRITE8_HANDLER( grmatch_xscroll_w );
+TIMER_DEVICE_CALLBACK( grmatch_palette_update );
+
VIDEO_UPDATE( itech8_2layer );
+VIDEO_UPDATE( itech8_grmatch );
VIDEO_UPDATE( itech8_2page );
VIDEO_UPDATE( itech8_2page_large );
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index 8b5aa364ae7..996bc0567cc 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -3095,6 +3095,7 @@ V-V TP-027
DRIVER( bowlrama ) /* (c) 1991 P & P Marketing */
DRIVER( wfortune ) /* (c) 1989 GameTek */
DRIVER( wfortuna ) /* (c) 1989 GameTek */
+ DRIVER( grmatch ) /* (c) 1989 GameTek */
DRIVER( stratab ) /* (c) 1990 Strata/Incredible Technologies */
DRIVER( stratab1 ) /* (c) 1990 Strata/Incredible Technologies */
DRIVER( sstrike ) /* (c) 1990 Strata/Incredible Technologies */
diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c
index 5099a44e336..b99d47d8629 100644
--- a/src/mame/video/itech8.c
+++ b/src/mame/video/itech8.c
@@ -154,6 +154,10 @@ static struct tms34061_display tms_state;
static UINT8 *grom_base;
static UINT32 grom_size;
+static UINT8 grmatch_palcontrol;
+static UINT8 grmatch_xscroll;
+static rgb_t grmatch_palette[2][16];
+
/*************************************
@@ -198,8 +202,8 @@ VIDEO_START( itech8 )
page_select = 0xc0;
/* fetch the GROM base */
- grom_base = memory_region(machine, "gfx1");
- grom_size = memory_region_length(machine, "gfx1");
+ grom_base = memory_region(machine, "grom");
+ grom_size = memory_region_length(machine, "grom");
}
@@ -396,11 +400,12 @@ static void perform_blit(running_machine *machine)
/* swap pixels for X flip in 4bpp mode */
if (xflip && transmaskhi != 0xff)
pix = (pix >> 4) | (pix << 4);
+ pix &= mask;
/* draw upper pixel */
if (!transparent || (pix & transmaskhi))
{
- tms_state.vram[addr] = (tms_state.vram[addr] & (0x0f << shift)) | ((pix & mask & 0xf0) >> shift);
+ tms_state.vram[addr] = (tms_state.vram[addr] & (0x0f << shift)) | ((pix & 0xf0) >> shift);
tms_state.latchram[addr] = (tms_state.latchram[addr] & (0x0f << shift)) | ((color & 0xf0) >> shift);
}
@@ -408,7 +413,7 @@ static void perform_blit(running_machine *machine)
if (!transparent || (pix & transmasklo))
{
offs_t addr1 = addr + shift/4;
- tms_state.vram[addr1] = (tms_state.vram[addr1] & (0xf0 >> shift)) | ((pix & mask & 0x0f) << shift);
+ tms_state.vram[addr1] = (tms_state.vram[addr1] & (0xf0 >> shift)) | ((pix & 0x0f) << shift);
tms_state.latchram[addr1] = (tms_state.latchram[addr1] & (0xf0 >> shift)) | ((color & 0x0f) << shift);
}
@@ -566,6 +571,52 @@ READ8_HANDLER( itech8_tms34061_r )
/*************************************
*
+ * Special Grudge Match handlers
+ *
+ *************************************/
+
+WRITE8_HANDLER( grmatch_palette_w )
+{
+ /* set the palette control; examined in the scanline callback */
+ grmatch_palcontrol = data;
+}
+
+
+WRITE8_HANDLER( grmatch_xscroll_w )
+{
+ /* update the X scroll value */
+ video_screen_update_now(machine->primary_screen);
+ grmatch_xscroll = data;
+}
+
+
+TIMER_DEVICE_CALLBACK( grmatch_palette_update )
+{
+ /* if the high bit is set, we are supposed to latch the palette values */
+ if (grmatch_palcontrol & 0x80)
+ {
+ /* the TMS34070s latch at the start of the frame, based on the first few bytes */
+ UINT32 page_offset = (tms_state.dispstart & 0x0ffff) | grmatch_xscroll;
+ int page, x;
+
+ /* iterate over both pages */
+ for (page = 0; page < 2; page++)
+ {
+ const UINT8 *base = &tms_state.vram[(page * 0x20000 + page_offset) & 0x3ffff];
+ for (x = 0; x < 16; x++)
+ {
+ UINT8 data0 = base[x * 2 + 0];
+ UINT8 data1 = base[x * 2 + 1];
+ grmatch_palette[page][x] = MAKE_RGB(pal4bit(data0 >> 0), pal4bit(data1 >> 4), pal4bit(data1 >> 0));
+ }
+ }
+ }
+}
+
+
+
+/*************************************
+ *
* Main refresh
*
*************************************/
@@ -606,6 +657,53 @@ VIDEO_UPDATE( itech8_2layer )
}
+VIDEO_UPDATE( itech8_grmatch )
+{
+ UINT32 page_offset;
+ int x, y;
+
+ /* first get the current display state */
+ tms34061_get_display_state(&tms_state);
+
+ /* if we're blanked, just fill with black */
+ if (tms_state.blanked)
+ {
+ fillbitmap(bitmap, get_black_pen(screen->machine), cliprect);
+ return 0;
+ }
+
+ /* there are two layers: */
+ /* top layer @ 0x00000 is 4bpp, colors come from TMS34070, enabled via palette control */
+ /* bottom layer @ 0x20000 is 4bpp, colors come from TMS34070, enabled via palette control */
+ /* 4bpp pixels are packed 2 to a byte */
+ /* xscroll is set via a separate register */
+ page_offset = (tms_state.dispstart & 0x0ffff) | grmatch_xscroll;
+ for (y = cliprect->min_y; y <= cliprect->max_y; y++)
+ {
+ UINT8 *base0 = &tms_state.vram[0x00000 + ((page_offset + y * 256) & 0xffff)];
+ UINT8 *base2 = &tms_state.vram[0x20000 + ((page_offset + y * 256) & 0xffff)];
+ UINT32 *dest = BITMAP_ADDR32(bitmap, y, 0);
+
+ for (x = cliprect->min_x & ~1; x <= cliprect->max_x; x += 2)
+ {
+ UINT8 pix0 = base0[x / 2];
+ UINT8 pix2 = base2[x / 2];
+
+ if ((pix0 & 0xf0) != 0)
+ dest[x] = grmatch_palette[0][pix0 >> 4];
+ else
+ dest[x] = grmatch_palette[1][pix2 >> 4];
+
+ if ((pix0 & 0x0f) != 0)
+ dest[x + 1] = grmatch_palette[0][pix0 & 0x0f];
+ else
+ dest[x + 1] = grmatch_palette[1][pix2 & 0x0f];
+ }
+ }
+ return 0;
+}
+
+
VIDEO_UPDATE( itech8_2page )
{
UINT32 page_offset;