drw80pkr - more graphics/memory cleanup and preliminary input support

This commit is contained in:
Jim Stolis 2009-11-20 00:13:15 +00:00
parent cba7af8e5b
commit ad5a31d1d3

View File

@ -104,6 +104,10 @@ static WRITE8_HANDLER( drw80pkr_io_w )
if (p2 == 0x3f) if (p2 == 0x3f)
{ {
video_ram[n_offs] = data; video_ram[n_offs] = data;
tilemap_mark_tile_dirty(bg_tilemap, n_offs);
} else {
if ((data & 0xf0) != 0x00)
video_ram[n_offs] += ((data & 0xf0) << 4 );
} }
tilemap_mark_tile_dirty(bg_tilemap, n_offs); tilemap_mark_tile_dirty(bg_tilemap, n_offs);
@ -184,27 +188,23 @@ static READ8_HANDLER( bus_r )
static READ8_HANDLER( drw80pkr_io_r ) static READ8_HANDLER( drw80pkr_io_r )
{ {
UINT8 ret; UINT8 ret;
UINT16 n_offs; UINT16 kbdin;
ret = 0x00; ret = 0x00;
if (p2 == 0x3b) if (p2 == 0x3b)
{ {
n_offs = ((p1 & 0xc0) << 2 ) + offset; // unknown
ret = video_ram[n_offs];
} }
if (p2 == 0x7b) if (p2 == 0x7b)
{ {
n_offs = ((p1 & 0xc0) << 2 ) + offset; ret = pkr_io_ram[offset];
ret = color_ram[n_offs];
} }
if (p2 == 0xf7) if (p2 == 0xf7)
{ {
ret = 0x00; // unknown // unknown
} }
if (p2 == 0xfb) if (p2 == 0xfb)
@ -215,10 +215,33 @@ static READ8_HANDLER( drw80pkr_io_r )
if (p2 == 0xff) if (p2 == 0xff)
{ {
// TODO: Get Input Port Values // TODO: Get Input Port Values
ret = 0x00; kbdin = ((input_port_read(space->machine, "IN1") & 0xaf ) << 8) + input_port_read(space->machine, "IN0");
// Set High Bit After Input (maybe door?) switch (kbdin)
ret += 0x80; {
// The following is very incorrect, but does allow you to
// play slightly with very messed up hold buttons etc.
//
// Open/Close the door with 'O'
// Press '5' with door open to play credit
// Press '1' to draw/deal
//
case 0x0000: ret = 0x00; break;
case 0x0001: ret = 0x01; break; /* Door */
case 0x4000: ret = 0x00; break;
case 0x8000: ret = 0x00; break; /* Hand Pay */
case 0x0002: ret = 0x00; break; /* Books */
case 0x0004: ret = 0x0e; break; /* Coin In */
case 0x0008: ret = 0x0d; break; /* Start */
case 0x0010: ret = 0x00; break; /* Discard */
case 0x0020: ret = 0x00; break; /* Cancel */
case 0x0040: ret = 0x01; break; /* Hold 1 */
case 0x0080: ret = 0x02; break; /* Hold 2 */
case 0x0100: ret = 0x03; break; /* Hold 3 */
case 0x0200: ret = 0x04; break; /* Hold 4 */
case 0x0400: ret = 0x05; break; /* Hold 5 */
case 0x0800: ret = 0x00; break; /* Bet */
}
} }
return ret; return ret;
@ -337,6 +360,26 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( drw80pkr ) static INPUT_PORTS_START( drw80pkr )
// Unknown at this time // Unknown at this time
// These are temporary buttons for testing only
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) PORT_TOGGLE
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Discard") PORT_CODE(KEYCODE_2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_CANCEL )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
/************************* /*************************