Fixed some video emulation bugs

This commit is contained in:
Angelo Salese 2009-06-23 15:24:06 +00:00
parent 28d0dcb67e
commit a671a003f1

View File

@ -1,4 +1,4 @@
/*************************************************************************** /******************************************************************************
Hit Poker (c) 1997 Accept LTD Hit Poker (c) 1997 Accept LTD
@ -6,11 +6,16 @@ preliminary driver by Angelo Salese & David Haywood
Many thanks to Olivier Galibert for the CPU identify effort ;-) Many thanks to Olivier Galibert for the CPU identify effort ;-)
TODO: TODO:
- Fix the CPU core bugs! (too many to list) - Fix the remaining CPU core bugs (for example the i/o & internal RAM disable to
- video HW looks awkward; avoid the soft reset thing)
- Protection controls inputs
- Understand & fix EEPROM emulation;
- complete video HW (unknown bits and hblank);
- 24Khz monitor isn't supported, it changes the resolution to 648 x 480 and
changes the register 9 (raster lines x character lines) from 7 to 0xf.
- sound (I've heard something reasonable during tests, so it could be OK); - sound (I've heard something reasonable during tests, so it could be OK);
============================================================================ ================================================================================
'Hit Poker'? 'Hit Poker'?
@ -45,36 +50,38 @@ Some debug tricks (let's test this CPU as more as possible):
#include "driver.h" #include "driver.h"
#include "cpu/mc68hc11/mc68hc11.h" #include "cpu/mc68hc11/mc68hc11.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "video/mc6845.h"
static UINT8 *hitpoker_sys_regs; static UINT8 *hitpoker_sys_regs;
static UINT8 hitpoker_pic_data; static UINT8 hitpoker_pic_data;
#define CRTC_CLOCK XTAL_3_579545MHz
VIDEO_START(hitpoker) VIDEO_START(hitpoker)
{ {
videoram = auto_alloc_array(machine, UINT8, 0x35ff); videoram = auto_alloc_array(machine, UINT8, 0x35ff);
paletteram = auto_alloc_array(machine, UINT8, 0x1000); paletteram = auto_alloc_array(machine, UINT8, 0x1000);
colorram = auto_alloc_array(machine, UINT8, 0x2000); colorram = auto_alloc_array(machine, UINT8, 0x2000);
} }
VIDEO_UPDATE(hitpoker) VIDEO_UPDATE(hitpoker)
{ {
const gfx_element *gfx = screen->machine->gfx[0];
int count = 0; int count = 0;
int y,x; int y,x;
bitmap_fill(bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, 0);
for (y=0;y<30;y++) for (y=0;y<31;y++)
{ {
count+=2; for (x=0;x<81;x++) //it's probably 80 + 1 global line attribute at the start of each line
for (x=1;x<81;x++) //it's probably 80 + 1 global line attribute at the start of each line
{ {
int tile,color; int tile,color,gfx_bpp;
tile = (((videoram[count]<<8)|(videoram[count+1])) & 0x3fff); tile = (((videoram[count]<<8)|(videoram[count+1])) & 0x3fff);
color = (((colorram[count]<<8)|(colorram[count+1])) & 0xe000)>>13; gfx_bpp = (colorram[count] & 0x80)>>7; //flag between 4 and 8 bpp
drawgfx(bitmap,gfx,tile,color,0,0,(x-1)*8,(y+0)*8,cliprect,TRANSPARENCY_NONE,0); color = gfx_bpp ? ((colorram[count] & 0x70)>>4) : (colorram[count] & 0xf);
drawgfx(bitmap,screen->machine->gfx[gfx_bpp],tile,color,0,0,x*8,y*8,cliprect,TRANSPARENCY_NONE,0);
count+=2; count+=2;
} }
@ -133,7 +140,7 @@ static WRITE8_HANDLER( hitpoker_paletteram_w )
offset>>=1; offset>>=1;
datax=256*paletteram[offset*2]+paletteram[offset*2+1]; datax=256*paletteram[offset*2]+paletteram[offset*2+1];
/* TODO: format is wrong */ /* RGB565 */
b = ((datax)&0xf800)>>11; b = ((datax)&0xf800)>>11;
g = ((datax)&0x07e0)>>5; g = ((datax)&0x07e0)>>5;
r = ((datax)&0x001f)>>0; r = ((datax)&0x001f)>>0;
@ -141,22 +148,6 @@ static WRITE8_HANDLER( hitpoker_paletteram_w )
palette_set_color_rgb(space->machine, offset, pal5bit(r), pal6bit(g), pal5bit(b)); palette_set_color_rgb(space->machine, offset, pal5bit(r), pal6bit(g), pal5bit(b));
} }
static WRITE8_HANDLER( hitpoker_crtc_w )
{
static UINT8 address;
if(offset == 0)
address = data;
else
{
switch(address)
{
default:
logerror("Video Register %02x called with %02x data\n",address,data);
}
}
}
static READ8_HANDLER( rtc_r ) static READ8_HANDLER( rtc_r )
{ {
return 0x80; //kludge it for now return 0x80; //kludge it for now
@ -171,13 +162,13 @@ static WRITE8_HANDLER( eeprom_w )
if(offset == 0) if(offset == 0)
{ {
eeprom_index = (eeprom_index & 0x100)|(data & 0xff); eeprom_index = (eeprom_index & 0x100)|(data & 0xff);
printf("W INDEX %02x\n",data); //printf("W INDEX %02x\n",data);
} }
if(offset == 1) if(offset == 1)
{ {
eeprom_index = (eeprom_index & 0xff)|((data & 0x1)<<8); eeprom_index = (eeprom_index & 0xff)|((data & 0x1)<<8);
//data & 0x4: eeprom clock //data & 0x4: eeprom clock
printf("W CLOCK + INDEX %02x\n",data); //printf("W CLOCK + INDEX %02x\n",data);
} }
} }
@ -187,7 +178,7 @@ static READ8_HANDLER( eeprom_r )
tmp = eeprom_data[eeprom_index]; tmp = eeprom_data[eeprom_index];
if((eeprom_index & 0x1f) == 0x1f) if((eeprom_index & 0x1f) == 0x1f)
tmp = 0xaa; tmp = 0xaa;
printf("%02x\n",eeprom_index); //printf("%02x\n",eeprom_index);
eeprom_index++; eeprom_index++;
//eeprom_index&=0x1f; //eeprom_index&=0x1f;
return tmp; return tmp;
@ -197,19 +188,26 @@ static READ8_HANDLER( hitpoker_pic_r )
{ {
// logerror("R\n"); // logerror("R\n");
if(cpu_get_pc(space->cpu) == 0x3143 || if(offset == 0)
cpu_get_pc(space->cpu) == 0x314e || {
cpu_get_pc(space->cpu) == 0x3164 || if(cpu_get_pc(space->cpu) == 0x3143 ||
cpu_get_pc(space->cpu) == 0x3179) cpu_get_pc(space->cpu) == 0x314e ||
return hitpoker_pic_data; cpu_get_pc(space->cpu) == 0x3164 ||
cpu_get_pc(space->cpu) == 0x3179)
return hitpoker_pic_data;
return (hitpoker_pic_data & 0x7f) | (hitpoker_pic_data & 0x40 ? 0x80 : 0x00); return (hitpoker_pic_data & 0x7f) | (hitpoker_pic_data & 0x40 ? 0x80 : 0x00);
}
return hitpoker_sys_regs[offset];
} }
static WRITE8_HANDLER( hitpoker_pic_w ) static WRITE8_HANDLER( hitpoker_pic_w )
{ {
hitpoker_pic_data = (data & 0xff);// | (data & 0x40) ? 0x80 : 0x00; if(offset == 0)
hitpoker_pic_data = (data & 0xff);// | (data & 0x40) ? 0x80 : 0x00;
// logerror("%02x W\n",data); // logerror("%02x W\n",data);
hitpoker_sys_regs[offset] = data;
} }
#if 0 #if 0
@ -220,17 +218,19 @@ static READ8_HANDLER( test_r )
#endif #endif
/* overlap empty rom addresses */ /* overlap empty rom addresses */
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( hitpoker_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x00ff) AM_RAM // stack ram AM_RANGE(0x0000, 0x00ff) AM_RAM // stack ram
AM_RANGE(0x1000, 0x1000) AM_READWRITE(hitpoker_pic_r,hitpoker_pic_w) // protection AM_RANGE(0x1000, 0x103f) AM_READWRITE(hitpoker_pic_r,hitpoker_pic_w) AM_BASE(&hitpoker_sys_regs) // protection
AM_RANGE(0x1000, 0x103f) AM_RAM AM_BASE(&hitpoker_sys_regs) // hw regs?
AM_RANGE(0x8000, 0xb5ff) AM_READWRITE(hitpoker_vram_r,hitpoker_vram_w) AM_RANGE(0x8000, 0xb5ff) AM_READWRITE(hitpoker_vram_r,hitpoker_vram_w)
AM_RANGE(0xb600, 0xbdff) AM_RAM AM_RANGE(0xb600, 0xbdff) AM_RAM
AM_RANGE(0xbe0c, 0xbe0c) AM_READNOP //irq ack? AM_RANGE(0xbe0a, 0xbe0a) AM_READ_PORT("IN0")
AM_RANGE(0xbe0c, 0xbe0c) AM_READ_PORT("IN2") //irq ack?
AM_RANGE(0xbe0d, 0xbe0d) AM_READ(rtc_r) AM_RANGE(0xbe0d, 0xbe0d) AM_READ(rtc_r)
AM_RANGE(0xbe0e, 0xbe0e) AM_READ_PORT("IN1")
AM_RANGE(0xbe50, 0xbe51) AM_WRITE(eeprom_w) AM_RANGE(0xbe50, 0xbe51) AM_WRITE(eeprom_w)
AM_RANGE(0xbe53, 0xbe53) AM_READ(eeprom_r) AM_RANGE(0xbe53, 0xbe53) AM_READ(eeprom_r)
AM_RANGE(0xbe80, 0xbe81) AM_WRITE(hitpoker_crtc_w) AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0xbe81, 0xbe81) AM_DEVWRITE("crtc", mc6845_register_w)
AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("ay", ay8910_r,ay8910_address_data_w) AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("ay", ay8910_r,ay8910_address_data_w)
AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well
// AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r) // AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r)
@ -240,38 +240,222 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xbf00, 0xffff) AM_ROM AM_RANGE(0xbf00, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( main_io, ADDRESS_SPACE_IO, 8 ) /* unused, to be removed */
static ADDRESS_MAP_START( hitpoker_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( hitpoker ) static INPUT_PORTS_START( hitpoker )
PORT_START("VBLANK") PORT_START("VBLANK")
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) //scanline counter probably PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) //resets the game?
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "H-Blank" ) //scanline counter probably
PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Monitor" ) //a JP probably
PORT_DIPSETTING( 0x40, "15KHz" )
PORT_DIPSETTING( 0x00, "24KHz" )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
PORT_START("IN0")
PORT_DIPNAME( 0x01, 0x01, "IN0" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("IN1")
PORT_DIPNAME( 0x01, 0x01, "IN1" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("IN2")
PORT_DIPNAME( 0x01, 0x01, "IN2" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x01, "DSW1" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, "DSW2" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static const gfx_layout hitpoker_layout_4bpp =
{
8,8,
RGN_FRAC(1,1),
4,
{ 0,4,8,12 },
{ 0,1,2,3,16,17,18,19 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
8*32
};
static const gfx_layout hitpoker_layout = static const gfx_layout hitpoker_layout_8bpp =
{ {
8,8, 8,8,
RGN_FRAC(1,2), RGN_FRAC(1,2),
8, 8,
{ RGN_FRAC(1,2)+0,RGN_FRAC(1,2)+4,RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+12,0,4,8,12 }, { RGN_FRAC(1,2)+0,RGN_FRAC(1,2)+4,RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+12,0,4,8,12 },
{ 0,1,2,3,16,17,18,19 }, { 0,1,2,3,16,17,18,19 },
{ 0*32, 1*32, 2*32, 3*32,4*32,5*32,6*32,7*32 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
8*32 8*32
}; };
static GFXDECODE_START( hitpoker ) static GFXDECODE_START( hitpoker )
GFXDECODE_ENTRY( "gfx1", 0, hitpoker_layout, 0, 8 ) GFXDECODE_ENTRY( "gfx1", 0, hitpoker_layout_4bpp, 0, 0x100 )
GFXDECODE_ENTRY( "gfx1", 0, hitpoker_layout_8bpp, 0, 8 )
GFXDECODE_END GFXDECODE_END
static const mc6845_interface mc6845_intf =
{
"screen", /* screen we are acting on */
8, /* number of pixels per video memory address */
NULL, /* before pixel update callback */
NULL, /* row update callback */
NULL, /* after pixel update callback */
DEVCB_NULL, /* callback for display state changes */
DEVCB_NULL, /* callback for cursor state changes */
DEVCB_NULL, /* HSYNC callback */
DEVCB_NULL, /* VSYNC callback */
NULL /* update address callback */
};
static const ay8910_interface ay8910_config =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
DEVCB_INPUT_PORT("DSW1"),
DEVCB_INPUT_PORT("DSW2"),
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_DRIVER_START( hitpoker ) static MACHINE_DRIVER_START( hitpoker )
MDRV_CPU_ADD("maincpu", MC68HC11,1000000) MDRV_CPU_ADD("maincpu", MC68HC11,1000000)
MDRV_CPU_PROGRAM_MAP(main_map) MDRV_CPU_PROGRAM_MAP(hitpoker_map)
MDRV_CPU_IO_MAP(main_io) MDRV_CPU_IO_MAP(hitpoker_io)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
/* video hardware */ /* video hardware */
@ -279,11 +463,13 @@ static MACHINE_DRIVER_START( hitpoker )
MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(640, 480) MDRV_SCREEN_SIZE(648, 480) //setted with
MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 224-1) MDRV_SCREEN_VISIBLE_AREA(0, 648-1, 0, 480-1)
MDRV_MC6845_ADD("crtc", H46505, CRTC_CLOCK/2, mc6845_intf) /* hand tuned to get ~60 fps */
MDRV_GFXDECODE(hitpoker) MDRV_GFXDECODE(hitpoker)
MDRV_PALETTE_LENGTH(0x3000) MDRV_PALETTE_LENGTH(0x800)
MDRV_VIDEO_START(hitpoker) MDRV_VIDEO_START(hitpoker)
MDRV_VIDEO_UPDATE(hitpoker) MDRV_VIDEO_UPDATE(hitpoker)
@ -291,7 +477,7 @@ static MACHINE_DRIVER_START( hitpoker )
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("ay", AY8910, 1500000) MDRV_SOUND_ADD("ay", AY8910, 1500000)
// MDRV_SOUND_CONFIG(ay8910_config) MDRV_SOUND_CONFIG(ay8910_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_DRIVER_END MACHINE_DRIVER_END
@ -302,30 +488,12 @@ DRIVER_INIT(hitpoker)
ROM[0x10c6] = 0x01; ROM[0x10c6] = 0x01;
ROM[0x10c7] = 0x01; //patch the checksum routine for now... ROM[0x10c7] = 0x01; //patch the checksum routine for now...
#if 0 #if 1
ROM[0x1128] = 0x01; ROM[0x1220] = 0x01;
ROM[0x1129] = 0x01; ROM[0x1221] = 0x01;
ROM[0x112a] = 0x01; ROM[0x1222] = 0x01;
ROM[0x3a50] = 0x01;
ROM[0x1143] = 0x01; ROM[0x3a51] = 0x01;
ROM[0x1144] = 0x01;
ROM[0x1145] = 0x01;
ROM[0x1152] = 0x01;
ROM[0x1153] = 0x01;
ROM[0x1154] = 0x01;
ROM[0x115e] = 0x01;
ROM[0x115f] = 0x01;
ROM[0x1160] = 0x01;
ROM[0x1167] = 0x01;
ROM[0x1168] = 0x01;
ROM[0x1169] = 0x01;
ROM[0x1170] = 0x01;
ROM[0x1171] = 0x01;
ROM[0x1172] = 0x01;
#endif #endif
} }