src/mess/drivers/pv1000.c
| r7114 | r7115 | |
| 11 | 11 | |
| 12 | 12 | static UINT8 *pv1000_ram; |
| 13 | 13 | static UINT8 pv1000_io_regs[8]; |
| 14 | static UINT8 pv1000_tmp; |
| 14 | 15 | |
| 15 | 16 | |
| 16 | 17 | static WRITE8_HANDLER( pv1000_io_w ); |
| r7114 | r7115 | |
| 44 | 45 | |
| 45 | 46 | switch ( offset ) |
| 46 | 47 | { |
| 48 | case 0x04: |
| 49 | /* Bit 1 = 1 => to pass checks in Amidar? */ |
| 50 | /* Bit 0 = 0 => done reading joystick interface? */ |
| 51 | data &= 0xFE; |
| 52 | if ( ( pv1000_io_regs[5] & 0x1F ) == 0x00 ) |
| 53 | { |
| 54 | if ( pv1000_tmp == 0 ) |
| 55 | { |
| 56 | data = ( data & 0xFD ) | 0x01; |
| 57 | } |
| 58 | pv1000_tmp = 0; |
| 59 | } |
| 60 | else |
| 61 | { |
| 62 | pv1000_tmp = 1; |
| 63 | } |
| 64 | break; |
| 47 | 65 | case 0x05: |
| 48 | | /* This input stuff is not working yet */ |
| 66 | data = 0; |
| 49 | 67 | if ( pv1000_io_regs[5] & 0x08 ) |
| 50 | 68 | { |
| 51 | 69 | data = input_port_read( space->machine, "IN3" ); |
| 52 | 70 | } |
| 53 | 71 | if ( pv1000_io_regs[5] & 0x04 ) |
| 54 | 72 | { |
| 73 | data = input_port_read( space->machine, "IN2" ); |
| 55 | 74 | } |
| 56 | 75 | if ( pv1000_io_regs[5] & 0x02 ) |
| 57 | 76 | { |
| 77 | data = input_port_read( space->machine, "IN1" ); |
| 58 | 78 | } |
| 59 | 79 | if ( pv1000_io_regs[5] & 0x01 ) |
| 60 | 80 | { |
| 81 | data = input_port_read( space->machine, "IN0" ); |
| 61 | 82 | } |
| 62 | 83 | break; |
| 63 | 84 | } |
| r7114 | r7115 | |
| 67 | 88 | |
| 68 | 89 | |
| 69 | 90 | static INPUT_PORTS_START( pv1000 ) |
| 70 | | PORT_START("IN3") |
| 91 | PORT_START( "IN0" ) |
| 92 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1) |
| 93 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(1) |
| 94 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(2) |
| 95 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(2) |
| 96 | |
| 97 | PORT_START( "IN1" ) |
| 98 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY |
| 99 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY |
| 100 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY |
| 101 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY |
| 102 | |
| 103 | PORT_START( "IN2" ) |
| 104 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY |
| 105 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY |
| 106 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY |
| 107 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY |
| 108 | |
| 109 | PORT_START( "IN3" ) |
| 71 | 110 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 72 | 111 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) |
| 73 | 112 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| r7114 | r7115 | |
| 148 | 187 | } |
| 149 | 188 | |
| 150 | 189 | |
| 190 | static MACHINE_RESET( pv1000 ) |
| 191 | { |
| 192 | pv1000_io_regs[5] = 0; |
| 193 | pv1000_tmp = 0; |
| 194 | } |
| 195 | |
| 196 | |
| 151 | 197 | static const gfx_layout pv1000_3bpp_gfx = |
| 152 | 198 | { |
| 153 | 199 | 8, 8, /* 8x8 characters */ |
| r7114 | r7115 | |
| 173 | 219 | |
| 174 | 220 | MDRV_CPU_VBLANK_INT("screen", pv1000_irq) |
| 175 | 221 | |
| 222 | MDRV_MACHINE_RESET( pv1000 ) |
| 223 | |
| 176 | 224 | MDRV_SCREEN_ADD( "screen", RASTER ) |
| 177 | 225 | MDRV_SCREEN_FORMAT( BITMAP_FORMAT_INDEXED16 ) |
| 178 | 226 | MDRV_SCREEN_REFRESH_RATE( 60 ) |
| r7114 | r7115 | |
| 183 | 231 | MDRV_PALETTE_INIT( pv1000 ) |
| 184 | 232 | MDRV_GFXDECODE( pv1000 ) |
| 185 | 233 | |
| 186 | | /* D65010G031 - Video & sound chip */ |
| 234 | /* uPD4016c / D65010G031 - Video & sound chip */ |
| 187 | 235 | MDRV_VIDEO_UPDATE( pv1000 ) |
| 188 | 236 | |
| 189 | 237 | /* Cartridge slot */ |