* Hooked up 6845
* Hooked up lscnblk line
* Fixed Phraze Craze gfx rom ordering
* Clocks from schematics
* Ram palette moved to static var. This should not be in RAM.
* Added save state support
This commit is contained in:
Couriersud 2008-09-30 22:45:10 +00:00
parent c44a5d3d1c
commit 227dccde00

View File

@ -8,8 +8,9 @@
- Some other missing categories romsets and new / old revision
TODO:
- finish video emulation (flipped tiles?)
- hook up 6845
- add flipscreen according to schematics
- pitboss: dip switches
- general - add named output notifiers
Notes: it's important that "user1" is 0xa0000 bytes with empty space filled
with 0xff, because the built-in roms test checks how many question roms
@ -34,15 +35,42 @@ Notes: it's important that "user1" is 0xa0000 bytes with empty space filled
#include "driver.h"
#include "machine/8255ppi.h"
#include "sound/ay8910.h"
#include "video/mc6845.h"
static tilemap *bg_tilemap;
static UINT8 *phrcraze_attr;
#define MASTER_CLOCK (XTAL_10MHz)
#define CPU_CLOCK (MASTER_CLOCK / 4)
#define PIXEL_CLOCK (MASTER_CLOCK / 1)
#define CRTC_CLOCK (MASTER_CLOCK / 8)
#define NUM_PENS (16)
#define RAM_PALETTE_SIZE (1024)
static pen_t pens[NUM_PENS];
static UINT8 *ram_attr;
static UINT8 *ram_video;
static UINT8 *ram_palette;
static UINT8 lscnblk;
static int extra_video_bank_bit;
static int question_address = 0;
static int question_address;
static int decryption_key;
static MACHINE_START(merit)
{
question_address = 0;
ram_palette = auto_malloc(RAM_PALETTE_SIZE);
state_save_register_global_pointer(ram_palette, RAM_PALETTE_SIZE);
state_save_register_global(lscnblk);
state_save_register_global(extra_video_bank_bit);
state_save_register_global(question_address);
state_save_register_global(decryption_key);
}
static READ8_HANDLER( questions_r )
{
UINT8 *questions = memory_region(machine, "user1");
@ -80,10 +108,11 @@ static READ8_HANDLER( questions_r )
case 0x18: address = 0x90000;
break;
// not used? only 10 roms are tested in service mode
// b0 b1 b2 b3 b4 b5 b6 b7 a8 98
// case 0xb0: address = 0xa0000;
// break;
/* not used? only 10 roms are tested in service mode
* b0 b1 b2 b3 b4 b5 b6 b7 a8 98
* case 0xb0: address = 0xa0000;
* break;
*/
default: logerror("read unknown question rom: %02X\n",question_address >> 16);
return 0xff;
@ -114,57 +143,118 @@ static WRITE8_HANDLER( high_offset_w )
question_address = (question_address & 0x00ffff) | (offset << 16);
}
static WRITE8_HANDLER( phrcraze_attr_w )
static READ8_HANDLER( palette_r )
{
phrcraze_attr[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap,offset);
int co;
co = ((ram_attr[offset] & 0x7F) << 3) | (offset & 0x07);
return ram_palette[co];
}
static WRITE8_HANDLER( phrcraze_bg_w )
{
videoram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap,offset);
}
static TILE_GET_INFO( get_tile_info_bg )
{
int attr = phrcraze_attr[tile_index];
int region = (attr & 0x40) >> 6;
int code = videoram[tile_index] | ((attr & 0x80) << 1);
int colour = attr & 0x7F;
//if(region == 0) /* not sure whether this applies to all games */
code |= extra_video_bank_bit;
if (region == 1)
colour = (colour<<2) | 0x03;
SET_TILE_INFO(region, code, colour, 0);
}
static WRITE8_HANDLER( palette_w )
{
int dim, bit0, bit1, bit2;
int co;
video_screen_update_now(machine->primary_screen);
data &= 0x0f;
co = ((phrcraze_attr[offset] & 0x7F) << 3) | (offset & 0x07);
paletteram[co] = data;
co = ((ram_attr[offset] & 0x7F) << 3) | (offset & 0x07);
ram_palette[co] = data;
dim = BIT(data,3) ? 255 : 127;
bit0 = BIT(data,0);
bit1 = BIT(data,1);
bit2 = BIT(data,2);
if (co & 0x200) /* character rom ==> A2, bit shift */
co = (co & 0x3F8) | ((co>>2) & 0x01) | ((co<<1) & 0x06);
palette_set_color_rgb(machine, co, dim*bit0, dim*bit1, dim*bit2);
}
static MC6845_BEGIN_UPDATE( begin_update )
{
int i;
int dim, bit0, bit1, bit2;
for (i=0; i < NUM_PENS; i++)
{
dim = BIT(i,3) ? 255 : 127;
bit0 = BIT(i,0);
bit1 = BIT(i,1);
bit2 = BIT(i,2);
pens[i] = MAKE_RGB(dim*bit0, dim*bit1, dim*bit2);
}
return pens;
}
static MC6845_UPDATE_ROW( update_row )
{
UINT8 cx;
pen_t *pens = (pen_t *)param;
UINT8 *gfx[2];
UINT16 x = 0;
int rlen;
gfx[0] = memory_region(device->machine, "gfx1");
gfx[1] = memory_region(device->machine, "gfx2");
rlen = memory_region_length(device->machine, "gfx2");
//ma = ma ^ 0x7ff;
for (cx = 0; cx < x_count; cx++)
{
int i;
int attr = ram_attr[ma];
int region = (attr & 0x40) >> 6;
int addr = ((ram_video[ma] | ((attr & 0x80) << 1) | (extra_video_bank_bit)) << 4) | (ra & 0x0f);
int colour = (attr & 0x7f) << 3;
UINT8 *data;
addr &= (rlen-1);
data = gfx[region];
for (i = 7; i>=0; i--)
{
int col = colour;
col |= (BIT(data[0x0000 | addr],i)<<2);
if (region==0)
{
col |= (BIT(data[rlen | addr],i)<<1);
col |= (BIT(data[rlen<<1 | addr],i)<<0);
}
else
col |= 0x03;
col = ram_palette[col & 0x3ff];
*BITMAP_ADDR32(bitmap, y, x) = pens[col ? col : (lscnblk ? 8 : 0)];
x++;
}
ma++;
}
}
MC6845_ON_HSYNC_CHANGED(hsync_changed)
{
/* update any video up to the current scanline */
video_screen_update_now(device->machine->primary_screen);
}
MC6845_ON_VSYNC_CHANGED(vsync_changed)
{
cpunum_set_input_line(device->machine, 0, 0, vsync ? ASSERT_LINE : CLEAR_LINE);
}
static const mc6845_interface mc6845_intf =
{
"main", /* screen we are acting on */
CRTC_CLOCK, /* the clock (pin 21) of the chip */
8, /* number of pixels per video memory address */
begin_update, /* before pixel update callback */
update_row, /* row update callback */
0, /* after pixel update callback */
0, /* callback for display state changes */
hsync_changed, /* HSYNC callback */
vsync_changed /* VSYNC callback */
};
static WRITE8_HANDLER( led1_w )
{
/* 5 button lamps player 1 */
@ -192,32 +282,35 @@ static WRITE8_HANDLER( misc_w )
{
flip_screen_set(~data & 0x10);
extra_video_bank_bit = (data & 2) << 8;
lscnblk = (data >> 3) & 1;
// other bits unknown
/* other bits unknown */
}
static ADDRESS_MAP_START( pitboss_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x6000, 0x67ff) AM_RAM
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN1")
AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN0")
AM_RANGE(0xa002, 0xa002) AM_NOP //dips ?
// AM_RANGE(0xc000, 0xc002) AM_NOP
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xa002, 0xa002) AM_NOP /* dips ? */
/* AM_RANGE(0xc000, 0xc002) AM_NOP */
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bigappg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0xa000, 0xafff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0xa000, 0xafff) AM_RAM
AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
@ -226,13 +319,14 @@ static ADDRESS_MAP_START( trvwhiz_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4c00, 0x4cff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0x5400, 0x54ff) AM_WRITE(low_offset_w)
AM_RANGE(0x5800, 0x58ff) AM_WRITE(med_offset_w)
AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x6000, 0x67ff) AM_RAM
AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( trvwhiz_io_map, ADDRESS_SPACE_IO, 8 )
@ -243,16 +337,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( phrcraze_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0xa000, 0xbfff) AM_RAM
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xc00c, 0xc00f) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( phrcraze_io_map, ADDRESS_SPACE_IO, 8 )
@ -263,16 +358,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tictac_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x8000, 0x9fff) AM_RAM
AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( tictac_io_map, ADDRESS_SPACE_IO, 8 )
@ -283,24 +379,26 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( trvwhziv_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0xa000, 0xbfff) AM_RAM
AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
AM_RANGE(0xe000, 0xe001) AM_WRITENOP // 6845 crt
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(phrcraze_attr_w) AM_BASE(&phrcraze_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(phrcraze_bg_w) AM_BASE(&videoram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(palette_w) AM_BASE(&paletteram)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&ram_attr)
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&ram_video)
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
// in service mode:
// keep service test button pressed to clear the coin counter.
// keep it pressed for 10 seconds to clear all the memory.
// to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
/* in service mode:
* keep service test button pressed to clear the coin counter.
* keep it pressed for 10 seconds to clear all the memory.
* to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
*/
static INPUT_PORTS_START( phrcraze )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
@ -367,13 +465,14 @@ static INPUT_PORTS_START( phrcraze )
PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
PORT_DIPSETTING( 0x00, "Upright 2 Players" )
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
// PORT_DIPSETTING( 0x40, "Upright 1 Player" )
/* PORT_DIPSETTING( 0x40, "Upright 1 Player" ) */
INPUT_PORTS_END
// in service mode:
// keep service test button pressed to clear the coin counter.
// keep it pressed for 10 seconds to clear all the memory.
// to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
/* in service mode:
* keep service test button pressed to clear the coin counter.
* keep it pressed for 10 seconds to clear all the memory.
* to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
*/
static INPUT_PORTS_START( phrcrazs )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
@ -438,12 +537,13 @@ static INPUT_PORTS_START( phrcrazs )
PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
PORT_DIPSETTING( 0x00, "Upright 2 Players" )
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
// PORT_DIPSETTING( 0x40, "Upright 1 Player" )
/* PORT_DIPSETTING( 0x40, "Upright 1 Player" ) */
INPUT_PORTS_END
// keep service test button pressed to clear the coin counter.
// To enter hidden test-mode in service mode:
// enable "Reset High Scores" then press "Service Mode"
/* keep service test button pressed to clear the coin counter.
* To enter hidden test-mode in service mode:
* enable "Reset High Scores" then press "Service Mode"
*/
static INPUT_PORTS_START( tictac )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
@ -508,7 +608,7 @@ static INPUT_PORTS_START( tictac )
PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
PORT_DIPSETTING( 0x00, "Upright 2 Players" )
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
// PORT_DIPSETTING( 0x40, "Upright 1 Player" )
/* PORT_DIPSETTING( 0x40, "Upright 1 Player" ) */
INPUT_PORTS_END
static INPUT_PORTS_START( trivia )
@ -579,10 +679,11 @@ static INPUT_PORTS_START( trivia )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
// in service mode:
// keep service test button pressed to clear the coin counter.
// keep it pressed for 10 seconds to clear all the memory.
// to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
/* in service mode:
* keep service test button pressed to clear the coin counter.
* keep it pressed for 10 seconds to clear all the memory.
* to enter hidden test mode enable "Enable Test Mode", enable "Reset High Scores"
*/
static INPUT_PORTS_START( trvwhziv )
PORT_INCLUDE( trivia )
@ -618,11 +719,11 @@ static INPUT_PORTS_START( pitboss )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) //z
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) //x
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) //c
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) //v
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON9 ) //b
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) /* z */
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) /* x */
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) /* c */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) /* v */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON9 ) /* b */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 )
@ -738,46 +839,14 @@ static INPUT_PORTS_START( bigappg )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static VIDEO_START( merit )
{
bg_tilemap = tilemap_create(get_tile_info_bg,tilemap_scan_rows,8,8,64,32);
}
static VIDEO_UPDATE( merit )
{
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
const device_config *mc6845 = device_list_find_by_tag(screen->machine->config->devicelist, MC6845, "crtc");
mc6845_update(mc6845, bitmap, cliprect);
return 0;
}
static const gfx_layout tiles8x8x3_layout =
{
8,8,
RGN_FRAC(1,3),
3,
{ RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
{ 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
16*8
};
static const gfx_layout tiles8x8x1_layout =
{
8,8,
RGN_FRAC(1,1),
1,
{ 0 },
{ 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
16*8
};
static GFXDECODE_START( merit )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x3_layout, 0, 32 )
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8x1_layout, 0, 128 )
GFXDECODE_ENTRY( "gfx1", 8, tiles8x8x3_layout, 0, 32 ) // flipped tiles
GFXDECODE_ENTRY( "gfx2", 8, tiles8x8x1_layout, 0, 128 ) // flipped tiles
GFXDECODE_END
static const ppi8255_interface ppi8255_intf[2] =
{
{
@ -808,12 +877,9 @@ static const ay8910_interface merit_ay8912_interface =
static MACHINE_DRIVER_START( pitboss )
MDRV_CPU_ADD("main",Z80,2500000) /* ?? */
MDRV_CPU_ADD("main",Z80, CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(pitboss_map,0)
MDRV_CPU_IO_MAP(trvwhiz_io_map,0)
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
MDRV_NVRAM_HANDLER(generic_0fill)
MDRV_DEVICE_ADD( "ppi8255_0", PPI8255 )
MDRV_DEVICE_CONFIG( ppi8255_intf[0] )
@ -821,24 +887,22 @@ static MACHINE_DRIVER_START( pitboss )
MDRV_DEVICE_ADD( "ppi8255_1", PPI8255 )
MDRV_DEVICE_CONFIG( ppi8255_intf[1] )
MDRV_MACHINE_START(merit)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(64*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0, 64*8-1, 1*8, 32*8-1)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */
MDRV_GFXDECODE(merit)
MDRV_PALETTE_LENGTH(1024)
MDRV_DEVICE_ADD("crtc", MC6845)
MDRV_DEVICE_CONFIG(mc6845_intf)
MDRV_VIDEO_START(merit)
MDRV_VIDEO_UPDATE(merit)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("ay", AY8910, 2500000)
MDRV_SOUND_ADD("ay", AY8910, CRTC_CLOCK)
MDRV_SOUND_CONFIG(merit_ay8912_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
MACHINE_DRIVER_END
@ -940,7 +1004,7 @@ ROM_START( trvwzh )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "trivia.u40", 0x0000, 0x2000, CRC(cea7319f) SHA1(663cd18a4699dfd5ad1d3357094eff247e9b4a47) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "trivia.ent", 0x08000, 0x8000, CRC(ff45d92b) SHA1(10356bc6a04b2c53ecaf76cb0cba3ec70b4ba612) )
ROM_LOAD( "trivia1.ent", 0x18000, 0x8000, CRC(902e26f7) SHA1(f13b816bfc507fb429fb3f44531de346a82c780d) )
ROM_LOAD( "trivia.gen", 0x28000, 0x8000, CRC(1d8d353f) SHA1(6bd0cc5c67da81a48737f32bc49cbf235648c4c6) )
@ -962,7 +1026,7 @@ ROM_START( trvwzha )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "trivia.u40", 0x0000, 0x2000, CRC(cea7319f) SHA1(663cd18a4699dfd5ad1d3357094eff247e9b4a47) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "trivia.spo", 0x08000, 0x8000, CRC(64181d34) SHA1(f84e28fc589b86ca6a596815871ed26602bcc095) )
ROM_LOAD( "trivia1.spo", 0x18000, 0x8000, CRC(ae111429) SHA1(ff551d7ac7ad367338e908805aeb78c59a747919) )
ROM_LOAD( "trivia2.spo", 0x28000, 0x8000, CRC(ee9263b3) SHA1(1644ab01f17e3af1e193e509d64dcbb243d3eb80) )
@ -981,7 +1045,7 @@ ROM_START( trvwzv )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40.bin", 0x0000, 0x2000, CRC(1f0ff6e0) SHA1(5a31afde34aeb6f851389d093bb426e5cfdedbf2) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "ent_001_01.bin", 0x08000, 0x8000, CRC(c68ce954) SHA1(bf70fe64f095d5cfcf5347d83651b78c6c8bf05f) )
ROM_LOAD( "ent_001_02.bin", 0x18000, 0x8000, CRC(aac4ff63) SHA1(d68c4408b4dad976e317a33f2a4eaee39d90dbed) )
ROM_LOAD( "gen_001_01.bin", 0x28000, 0x8000, CRC(5deb1900) SHA1(b7e9407c37481ef8953e8283d45949d951302e92) )
@ -1003,7 +1067,7 @@ ROM_START( trvwzva )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40.bin", 0x0000, 0x2000, CRC(1f0ff6e0) SHA1(5a31afde34aeb6f851389d093bb426e5cfdedbf2) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "spo_001_01.bin", 0x08000, 0x8000, CRC(7b56315d) SHA1(4c8c63b80176bfac9594958a7043627012baada3) )
ROM_LOAD( "spo_001_02.bin", 0x18000, 0x8000, CRC(148b63ee) SHA1(9f3b222d979f23b313f379cbc06cc00d88d08c56) )
ROM_LOAD( "spo_001_03.bin", 0x28000, 0x8000, CRC(a6af8e41) SHA1(64f672bfa5fb2c0575103614986e53e238c5984f) )
@ -1022,7 +1086,7 @@ ROM_START( trvwz2 )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40a", 0x0000, 0x2000, CRC(fbfae092) SHA1(b8569819952a5c805f11b6854d64b3ae9c857f97) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "ent_101.01a", 0x08000, 0x8000, CRC(3825ac47) SHA1(d0da047c4d30a26f496b3663cfda77c229279be8) )
ROM_LOAD( "ent_101.02a", 0x18000, 0x8000, CRC(a0153407) SHA1(e669957a5d4775bfa2c16960a2a909a3505c078b) )
ROM_LOAD( "ent_101.03a", 0x28000, 0x8000, CRC(755b16ab) SHA1(277ea4110479ecdb2c772299ea04f4918cf7f561) )
@ -1048,7 +1112,7 @@ ROM_START( trvwz3h )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40", 0x0000, 0x2000, CRC(e829473f) SHA1(ba754d9377d955b409970494e1a14dbe1d359ee5) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "7", 0x08000, 0x8000, CRC(974dca96) SHA1(eb4a745c84307a1bbb220659877f97c28cd515ac) )
ROM_LOAD( "8", 0x18000, 0x8000, CRC(e15ef8d0) SHA1(51c946311ffe507aa9031044bc34e5ae8d3473ab) )
ROM_LOAD( "9", 0x28000, 0x8000, CRC(503115a1) SHA1(5e6630191465b3d2a590fab08b4f47f7408ecc44) )
@ -1073,7 +1137,7 @@ ROM_START( trvwz3v )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40", 0x0000, 0x2000, CRC(fbfae092) SHA1(b8569819952a5c805f11b6854d64b3ae9c857f97) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "10", 0x08000, 0x8000, CRC(15d16703) SHA1(9184f63669e9ec93e88276777e1b7f209543c3e3) )
ROM_LOAD( "8", 0x18000, 0x8000, CRC(647f3394) SHA1(636647ae620fd2f985b82e3516451e3bffd44040) )
ROM_LOAD( "7", 0x28000, 0x8000, CRC(974dca96) SHA1(eb4a745c84307a1bbb220659877f97c28cd515ac) )
@ -1098,7 +1162,7 @@ ROM_START( trvwz4 )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "u40.bin", 0x0000, 0x2000, CRC(fbfae092) SHA1(b8569819952a5c805f11b6854d64b3ae9c857f97) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "ent_4_1.bin", 0x08000, 0x8000, CRC(1b317149) SHA1(94e882e9cc041ac8f292136c1ce2d21340ac5e7f) )
ROM_LOAD( "ent_4_2.bin", 0x18000, 0x8000, CRC(43d51697) SHA1(7af3f16f9519184ae63d8818bbc52a2ba897f275) )
ROM_LOAD( "rnp_4_1.bin", 0x28000, 0x8000, CRC(e54fc4bc) SHA1(4607974ed2bf83c475396fc1cbb1e09ad084ace8) )
@ -1146,7 +1210,7 @@ ROM_START( tictac )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "merit.u40", 0x00000, 0x2000, CRC(ab0088eb) SHA1(23a05a4dc11a8497f4fc7e4a76085af15ff89cea) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "merit.pb1", 0x08000, 0x8000, CRC(d1584173) SHA1(7a2190203f478f446cc70c473c345e7cc332e049) )
ROM_LOAD( "merit.pb2", 0x18000, 0x8000, CRC(d00ab1fd) SHA1(c94269c8a478e88f71aeca94c6f20fc05a9c62bd) )
ROM_LOAD( "merit.pb3", 0x28000, 0x8000, CRC(71b398a9) SHA1(5ea07c409afd52c7d08592b30ff0ff3b72c3f8c3) )
@ -1163,14 +1227,14 @@ ROM_START( phrcraze )
ROM_REGION( 0x10000, "main", 0 )
ROM_LOAD( "phrz.11", 0x00000, 0x8000, CRC(ccd33a0c) SHA1(869b66af4369f3b4bc19336ca2b8104c7f652de7) )
// probably over-dumped
// probably over-dumped, 1st and 2nd half identical
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "phrz.10", 0x00000, 0x8000, CRC(bfa78b67) SHA1(1b51c0e00240f798fe717624e706cb15700bc2f9) )
ROM_LOAD( "phrz.8", 0x08000, 0x8000, CRC(9ce22cb3) SHA1(b653afb8f13decd993e434aaad69a6e09ab65f83) )
ROM_LOAD( "phrz.7", 0x10000, 0x8000, CRC(237e221a) SHA1(7aa69375c2b9a9e73e0e4ed207bf595368b2deb2) )
ROM_LOAD( "phrz.7", 0x00000, 0x8000, CRC(237e221a) SHA1(7aa69375c2b9a9e73e0e4ed207bf595368b2deb2) )
ROM_LOAD( "phrz.10", 0x08000, 0x8000, CRC(bfa78b67) SHA1(1b51c0e00240f798fe717624e706cb15700bc2f9) )
ROM_LOAD( "phrz.8", 0x10000, 0x8000, CRC(9ce22cb3) SHA1(b653afb8f13decd993e434aaad69a6e09ab65f83) )
// probably over-dumped
ROM_REGION( 0x8000, "gfx2", 0 )
ROM_REGION( 0x08000, "gfx2", 0 )
ROM_LOAD( "phrz.9", 0x00000, 0x8000, CRC(17dcddd4) SHA1(51682bdbfb67cd0ccf20b97e8fa12d72f0fe82ed) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
@ -1187,14 +1251,14 @@ ROM_START( phrcrazs )
ROM_LOAD( "u5.bin", 0x00000, 0x8000, CRC(6122b5bb) SHA1(9952b14334287a992eefefbdc887b9a9215304ef) )
ROM_REGION( 0xc000, "gfx1", 0 )
ROM_LOAD( "u39.bin", 0x00000, 0x4000, CRC(adbd2cdc) SHA1(a1e9481bd6ee0f8915cea43eaad3ebdd54438eed) )
ROM_LOAD( "u38.bin", 0x04000, 0x4000, CRC(3578f00d) SHA1(c6780a6ee1b5eb00258a89bceabbbe380d79d299) )
ROM_LOAD( "u37.bin", 0x08000, 0x4000, CRC(962f18a3) SHA1(ec1c3e470c59905c0f56fce2703f6ff586849512) )
ROM_LOAD( "u39.bin", 0x00000, 0x4000, BAD_DUMP CRC(adbd2cdc) SHA1(a1e9481bd6ee0f8915cea43eaad3ebdd54438eed) )
ROM_LOAD( "u38.bin", 0x04000, 0x4000, BAD_DUMP CRC(3578f00d) SHA1(c6780a6ee1b5eb00258a89bceabbbe380d79d299) )
ROM_LOAD( "u37.bin", 0x08000, 0x4000, BAD_DUMP CRC(962f18a3) SHA1(ec1c3e470c59905c0f56fce2703f6ff586849512) )
ROM_REGION( 0x4000, "gfx2", 0 )
ROM_LOAD( "u40.bin", 0x00000, 0x4000, CRC(493172c8) SHA1(a76ff5d0d3dd56b0ee4352f03c9ce92f107d34ec) )
ROM_LOAD( "u40.bin", 0x00000, 0x4000, BAD_DUMP CRC(493172c8) SHA1(a76ff5d0d3dd56b0ee4352f03c9ce92f107d34ec) )
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) // questions
ROM_REGION( 0xa0000, "user1", ROMREGION_ERASEFF ) /* questions */
ROM_LOAD( "std1.bin", 0x00000, 0x8000, CRC(0a016c5e) SHA1(1a24ecd7fe59b08c75a1b4575c7fe467cc7f0cf8) )
ROM_LOAD( "std2.bin", 0x10000, 0x8000, CRC(e67dc49e) SHA1(5265af228531dc16db7f7ee78da6e51ef9a1d772) )
ROM_LOAD( "std3.bin", 0x20000, 0x8000, CRC(5c79a653) SHA1(85a904465b347564e937074e2b18159604c83e51) )
@ -1202,7 +1266,7 @@ ROM_START( phrcrazs )
ROM_LOAD( "std5.bin", 0x40000, 0x8000, CRC(dc9d8682) SHA1(46973da4298d0ed149c651498527c91b8ba57e0a) )
ROM_LOAD( "std6.bin", 0x50000, 0x8000, CRC(48e24f17) SHA1(f50c85505f6ab2360f0885494001f174224f8575) )
/* empty space as per instructions for other "sex" category roms */
//"Sex" questions revision A
/* "Sex" questions revision A */
ROM_LOAD( "sex1_2a.bin", 0x80000, 0x8000, CRC(7ef3bca7) SHA1(f25cd01f996882a500e1a800d924759cd1de255d) )
ROM_LOAD( "sex1_1a.bin", 0x90000, 0x8000, CRC(ed7604b8) SHA1(b1e841b50b8ef6ae95fafac1c34b6d0337a05d18) )
ROM_END
@ -1221,7 +1285,7 @@ ROM_START( dodge )
ROM_LOAD( "dodge.u38", 0x08000, 0x8000, CRC(654d5b00) SHA1(9e16330b2dc8821fc20a39eb42176fda23085bfc) )
ROM_LOAD( "dodge.u37", 0x10000, 0x8000, CRC(bc9e63d4) SHA1(2320f5a0545f18e1e42a3a45fedce912c36fbe13) )
ROM_REGION( 0x2000, "gfx2", ROMREGION_ERASEFF )
ROM_REGION( 0x8000, "gfx2", ROMREGION_ERASEFF )
/* socket at position u40 is unpopulated */
ROM_END
@ -1252,18 +1316,18 @@ static DRIVER_INIT( key_7 )
decryption_key = 7;
}
GAME( 1983, pitboss, 0, pitboss, pitboss, 0, ROT0, "Merit", "Pit Boss", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1983, casino5, 0, pitboss, pitboss, 0, ROT0, "Merit", "Casino 5", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1985, trvwzh, 0, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Horizontal - Question set 1)", 0 )
GAME( 1985, trvwzha, trvwzh, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Horizontal - Question set 2)", 0 )
GAME( 1985, trvwzv, 0, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Vertical - Question set 1)", 0 )
GAME( 1985, trvwzva, trvwzv, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Vertical - Question set 2)", 0 )
GAME( 1985, trvwz2, 0, trvwhiz, trivia, key_2, ROT90, "Merit", "Trivia ? Whiz (Edition 2)", GAME_IMPERFECT_GRAPHICS )
GAME( 1985, trvwz3h, 0, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Edition 3 - Horizontal)", GAME_IMPERFECT_GRAPHICS )
GAME( 1985, trvwz3v, 0, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Edition 3 - Vertical)", GAME_IMPERFECT_GRAPHICS )
GAME( 1985, trvwz4, 0, trvwhziv, trvwhziv, key_5, ROT90, "Merit", "Trivia ? Whiz (Edition 4)", GAME_IMPERFECT_GRAPHICS )
GAME( 1985, tictac, 0, tictac, tictac, key_4, ROT0, "Merit", "Tic Tac Trivia", GAME_IMPERFECT_GRAPHICS )
GAME( 1986, phrcraze, 0, phrcraze, phrcraze, key_7, ROT0, "Merit", "Phraze Craze", GAME_IMPERFECT_GRAPHICS )
GAME( 1986, phrcrazs, 0, phrcraze, phrcrazs, key_7, ROT90, "Merit", "Phraze Craze (Sex Kit)", GAME_IMPERFECT_GRAPHICS )
GAME( 1986, bigappg, 0, bigappg, bigappg, 0, ROT0, "Merit", "Big Apple Games ?", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1986, dodge, 0, bigappg, bigappg, 0, ROT0, "Merit", "Dodge City", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1983, pitboss, 0, pitboss, pitboss, 0, ROT0, "Merit", "Pit Boss", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
GAME( 1983, casino5, 0, pitboss, pitboss, 0, ROT0, "Merit", "Casino 5", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1985, trvwzh, 0, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Horizontal - Question set 1)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwzha, trvwzh, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Horizontal - Question set 2)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwzv, 0, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Vertical - Question set 1)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwzva, trvwzv, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Vertical - Question set 2)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwz2, 0, trvwhiz, trivia, key_2, ROT90, "Merit", "Trivia ? Whiz (Edition 2)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwz3h, 0, trvwhiz, trivia, key_0, ROT0, "Merit", "Trivia ? Whiz (Edition 3 - Horizontal)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwz3v, 0, trvwhiz, trivia, key_0, ROT90, "Merit", "Trivia ? Whiz (Edition 3 - Vertical)", GAME_SUPPORTS_SAVE )
GAME( 1985, trvwz4, 0, trvwhziv, trvwhziv, key_5, ROT90, "Merit", "Trivia ? Whiz (Edition 4)", GAME_SUPPORTS_SAVE )
GAME( 1985, tictac, 0, tictac, tictac, key_4, ROT0, "Merit", "Tic Tac Trivia", GAME_SUPPORTS_SAVE )
GAME( 1986, phrcraze, 0, phrcraze, phrcraze, key_7, ROT0, "Merit", "Phraze Craze", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
GAME( 1986, phrcrazs, 0, phrcraze, phrcrazs, key_7, ROT90, "Merit", "Phraze Craze (Sex Kit)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
GAME( 1986, bigappg, 0, bigappg, bigappg, 0, ROT0, "Merit", "Big Apple Games ?", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
GAME( 1986, dodge, 0, bigappg, bigappg, 0, ROT0, "Merit", "Dodge City", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )