invqix: Added inputs and sound, promoted to working. Qix has some TBD text weirdness. [R. Belmont]

This commit is contained in:
R. Belmont 2012-08-05 22:10:26 +00:00
parent f3688c1e86
commit eef2b4a687

View File

@ -66,10 +66,11 @@ The other has the secondary label 351100210 with a serial number labeled:
Memory map: Memory map:
000000-1fffff: program ROM 000000-1fffff: program ROM
200000-20ffff: Work RAM 200000-20ffff: Work RAM
400000-400001: ??? (M5296 Watchdog??) 400000-400003: OKIM9810
600000-61ffff: VRAM 600000-61ffff: VRAM
I/O map: I/O map:
port 2 bit 3: must be "1" to avoid SERVICE ERROR
port 2 bit 6: FPGA chip select port 2 bit 6: FPGA chip select
port 2 bit 7: FPGA clock in port 2 bit 7: FPGA clock in
@ -113,15 +114,17 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER(port1_r);
DECLARE_READ8_MEMBER(port2_r); DECLARE_READ8_MEMBER(port2_r);
DECLARE_WRITE8_MEMBER(port2_w); DECLARE_WRITE8_MEMBER(port2_w);
DECLARE_READ8_MEMBER(port3_r); DECLARE_READ8_MEMBER(port3_r);
DECLARE_WRITE8_MEMBER(port3_w); DECLARE_WRITE8_MEMBER(port3_w);
DECLARE_READ8_MEMBER(port5_r);
DECLARE_WRITE8_MEMBER(port5_w);
DECLARE_READ8_MEMBER(port6_r); DECLARE_READ8_MEMBER(port6_r);
DECLARE_WRITE8_MEMBER(port6_w); DECLARE_WRITE8_MEMBER(port6_w);
DECLARE_READ8_MEMBER(porta_r); DECLARE_READ8_MEMBER(porta_r);
DECLARE_WRITE16_MEMBER(oki_w);
protected: protected:
// devices // devices
@ -165,14 +168,9 @@ UINT32 invqix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0; return 0;
} }
READ8_MEMBER(invqix_state::port1_r)
{
return 0xff;
}
READ8_MEMBER(invqix_state::port2_r) READ8_MEMBER(invqix_state::port2_r)
{ {
return 1; return machine().root_device().ioport("SYSTEM")->read(); // | 0x01;
} }
WRITE8_MEMBER(invqix_state::port2_w) WRITE8_MEMBER(invqix_state::port2_w)
@ -192,9 +190,18 @@ WRITE8_MEMBER(invqix_state::port3_w)
m_eeprom->set_clock_line((data >> 3) & 1); m_eeprom->set_clock_line((data >> 3) & 1);
} }
READ8_MEMBER(invqix_state::port5_r)
{
return 0xff;
}
WRITE8_MEMBER(invqix_state::port5_w)
{
}
READ8_MEMBER(invqix_state::port6_r) READ8_MEMBER(invqix_state::port6_r)
{ {
return 0; return 0xff;
} }
WRITE8_MEMBER(invqix_state::port6_w) WRITE8_MEMBER(invqix_state::port6_w)
@ -207,22 +214,56 @@ READ8_MEMBER(invqix_state::porta_r)
return 0xff; return 0xff;
} }
static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 32, invqix_state) static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 16, invqix_state)
AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("program", 0) AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("program", 0)
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_RANGE(0x200000, 0x21ffff) AM_RAM
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write_TMP_register, 0x00ff)
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00)
AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00)
AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram") AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram")
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START(invqix_io_map, AS_IO, 8, invqix_state) static ADDRESS_MAP_START(invqix_io_map, AS_IO, 8, invqix_state)
AM_RANGE(H8_PORT_1, H8_PORT_1) AM_READ(port1_r) AM_RANGE(H8_PORT_1, H8_PORT_1) AM_READ_PORT("P1")
AM_RANGE(H8_PORT_2, H8_PORT_2) AM_READWRITE(port2_r, port2_w) AM_RANGE(H8_PORT_2, H8_PORT_2) AM_READWRITE(port2_r, port2_w)
AM_RANGE(H8_PORT_3, H8_PORT_3) AM_READWRITE(port3_r, port3_w) AM_RANGE(H8_PORT_3, H8_PORT_3) AM_READWRITE(port3_r, port3_w)
AM_RANGE(H8_PORT_4, H8_PORT_4) AM_READ_PORT("P4")
AM_RANGE(H8_PORT_5, H8_PORT_5) AM_READWRITE(port5_r, port5_w)
AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE(port6_r, port6_w) AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE(port6_r, port6_w)
AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READ(porta_r) AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READ(porta_r)
AM_RANGE(H8_PORT_G, H8_PORT_G) AM_NOP AM_RANGE(H8_PORT_G, H8_PORT_G) AM_NOP
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( invqix ) static INPUT_PORTS_START( invqix )
PORT_START("SYSTEM")
PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) // coin 1
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) // start A-1 ("left start" - picks Space Invaders)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) // coin 2
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // start A-2
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // 0x40 - start B-2
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("P4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) // start B-1 ("right start" - picks Qix)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( invqix, invqix_state ) static MACHINE_CONFIG_START( invqix, invqix_state )
@ -262,4 +303,4 @@ ROM_START( invqix )
ROM_LOAD16_WORD_SWAP( "93c46.ic6", 0x000000, 0x000080, CRC(564b744e) SHA1(4d9ea7dc253797c513258d07a936dfb63d8ed18c) ) ROM_LOAD16_WORD_SWAP( "93c46.ic6", 0x000000, 0x000080, CRC(564b744e) SHA1(4d9ea7dc253797c513258d07a936dfb63d8ed18c) )
ROM_END ROM_END
GAME(2003, invqix, 0, invqix, invqix, invqix_state, 0, ROT270, "Namco/Taito", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", GAME_NOT_WORKING ) GAME(2003, invqix, 0, invqix, invqix, invqix_state, 0, ROT270, "Namco/Taito", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", GAME_IMPERFECT_GRAPHICS)