diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp index b27a9e3c076..e99ca3c02b7 100644 --- a/src/mame/drivers/s8.cpp +++ b/src/mame/drivers/s8.cpp @@ -114,7 +114,7 @@ private: DECLARE_READ_LINE_MEMBER(pia21_ca1_r); DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w); DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { } // enable solenoids - DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } // dummy to stop error log filling up + DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { m_io_outputs[16] = state; } // dummy to stop error log filling up DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } // comma3&4 DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } // comma1&2 DECLARE_WRITE_LINE_MEMBER(pia_irq); @@ -138,7 +138,7 @@ private: required_device m_pia30; required_ioport_array<8> m_io_keyboard; output_finder<61> m_digits; - output_finder<80> m_io_outputs; // 16 solenoids + 64 lamps + output_finder<86> m_io_outputs; // 22 solenoids + 64 lamps }; void s8_state::main_map(address_map &map) @@ -201,7 +201,7 @@ static INPUT_PORTS_START( s8 ) PORT_START("X7") PORT_START("DIAGS") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_7_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s8_state, audio_nmi, 1) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s8_state, audio_nmi, 1) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s8_state, main_nmi, 1) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_1_PAD) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_6_PAD) PORT_TOGGLE @@ -258,7 +258,7 @@ void s8_state::lamp1_w(u8 data) for (u8 i = 0; i < 8; i++) if (BIT(data, i)) for (u8 j = 0; j < 8; j++) - m_io_outputs[16U+i*8U+j] = BIT(m_lamp_data, j); + m_io_outputs[22U+i*8U+j] = BIT(m_lamp_data, j); } void s8_state::dig0_w(u8 data) diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp index aea6061b9ca..32439816e36 100644 --- a/src/mame/drivers/s8a.cpp +++ b/src/mame/drivers/s8a.cpp @@ -80,9 +80,9 @@ private: void switch_w(u8 data); DECLARE_READ_LINE_MEMBER(pia21_ca1_r); DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { } // enable solenoids - DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } // dummy to stop error log filling up - DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } // comma3&4 - DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } // comma1&2 + DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { m_io_outputs[16] = state; } // not used + DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } // comma3&4 (not used) + DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } // comma1&2 (not used) DECLARE_WRITE_LINE_MEMBER(pia_irq); void main_map(address_map &map); @@ -101,7 +101,7 @@ private: required_device m_pia30; required_ioport_array<8> m_io_keyboard; output_finder<61> m_digits; - output_finder<80> m_io_outputs; // 16 solenoids + 64 lamps + output_finder<86> m_io_outputs; // 22 solenoids + 64 lamps }; void s8a_state::main_map(address_map &map) @@ -183,7 +183,7 @@ void s8a_state::lamp1_w(u8 data) for (u8 i = 0; i < 8; i++) if (BIT(data, i)) for (u8 j = 0; j < 8; j++) - m_io_outputs[16U+i*8U+j] = BIT(m_lamp_data, j); + m_io_outputs[22U+i*8U+j] = BIT(m_lamp_data, j); } void s8a_state::dig0_w(u8 data) diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp index f4eaa2bb492..c140a35ae10 100644 --- a/src/mame/drivers/wpc_an.cpp +++ b/src/mame/drivers/wpc_an.cpp @@ -1,16 +1,31 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert, Miodrag Milanovic -/* - Williams WPC (Alpha Numeric) +/*************************************************************************************************** +PINBALL +Williams WPC (Alpha Numeric) - Note: It is possible to get funhouse (fh_l3 at least) in-game by coining it up, then holding the following keys, - and pressing the start button, or else you get "PINBALL MISSING": - W (right ball shooter, c6 r2) - E (right trough, c6 r3) - DEL (dummy jaw opto, c5 r1) - HOME (right outlane, c5 r2) - END (right slingshot kicker, c5 r3) - It's possible not all of these are strictly necessary to make it work. +Since NVRAM is not working, when it starts factory settings will be applied. + Press F3, and wait for the game attract mode to commence. + +Here are the key codes to enable play: + +Game NUM Start game End ball +----------------------------------------------------------------------------------------------- +Dr Dude and his Excellent Ray 2016 0 = credit, 1 = start ET +Harley Davidson 20001 Hold BCD hit 1 BCD +The Machine: Bride of Pin-bot 50002 Hold EFG hit 1 EFG +Funhouse 50003 Jiggle []YZ Space together, hit 1 ]Right Del + +Note for Dr Dude: +- This is a WMS prototype, and the inputs are different to the other games +- Credit buttons: S,B,W +- Waiting for Pinballs: 0 +- Start: 1 +- Slam Tilt: C +- Normal Tilt: Right Shift + +Note for Funhouse: +- Pressing 6 keys at once is not fun, and you may have to try a few times. TODO: replace the 8x8 pinball input matrix keymap by some sort of common interface for the Williams system 6, 9, 10, 11/a/b/c and WPC; @@ -53,8 +68,11 @@ 0x20-0x24). See machine/wpc.h - TODO: (wpc in general) - The /FIRQ signal from the WPC sound board is directly connected to the +TODO: (wpc in general) +- Add NVRAM +- Outputs +- Mechanical sounds +- The /FIRQ signal from the WPC sound board is directly connected to the MC68B09E maincpu, along with the /FIRQ signal generated from inside the WPC ASIC itself (see machine/wpc.cpp and wpc.h) and needs to properly handle both the 'external, unmaskable' version of the signal generated by @@ -65,7 +83,7 @@ The exact details of how this all works may not be documented publicly anywhere, so may require hardware tests and logic analysis to figure it out fully. -*/ +**************************************************************************************************/ #include "emu.h" @@ -130,10 +148,10 @@ private: void wpc_sound_s11_w(uint8_t data); void wpc_rombank_w(uint8_t data); - uint16_t m_vblank_count; - uint32_t m_irq_count; - uint8_t m_bankmask; - uint8_t m_ram[0x3000]; + uint16_t m_vblank_count = 0U; + uint32_t m_irq_count = 0U; + uint8_t m_bankmask = 0U; + uint8_t m_ram[0x3000]{}; emu_timer* m_vblank_timer; emu_timer* m_irq_timer; }; @@ -149,98 +167,88 @@ void wpc_an_state::wpc_an_map(address_map &map) } static INPUT_PORTS_START( wpc_an ) - PORT_START("INP0") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("INP1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT) // left flipper - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RALT) // right flipper + PORT_START("X0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Right Flipper") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Left Flipper") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LCONTROL) // coin on dd_p06/dd_p7, otherwise unused? - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RCONTROL) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LSHIFT) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SPACE) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP15") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP16") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP17") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP18") - PORT_START("INP2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) // always closed - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) + PORT_START("X1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE PORT_NAME("Coin Door") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Ticket Dispenser") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) // always closed + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP25") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP26") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP27") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP28") - PORT_START("INP4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) + PORT_START("X2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP31") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP32") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP33") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP34") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP35") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP36") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP37") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP38") - PORT_START("INP8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) + PORT_START("X3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP41") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP42") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP43") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP44") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP45") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP46") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP47") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("INP48") - PORT_START("INP10") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN) + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP51") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP52") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("INP53") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP54") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP55") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP56") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP57") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP58") - PORT_START("INP20") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DEL) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_HOME) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_END) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_PGUP) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_PGDN) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_0_PAD) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DEL_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER_PAD) + PORT_START("X5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP61") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP62") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP63") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP64") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP65") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP66") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("INP67") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("INP68") - PORT_START("INP40") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O) + PORT_START("X6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("INP71") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("INP72") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_NAME("INP73") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("INP74") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("INP75") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_END) PORT_NAME("INP76") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("INP77") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("INP80") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH_PAD) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ASTERISK) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) + PORT_START("X7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("COIN") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_6_PAD) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_0_PAD) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_CODE(KEYCODE_PLUS_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_5_PAD) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_ENTER_PAD) PORT_START("DIPS") PORT_DIPNAME(0x01,0x01,"Switch 1") PORT_DIPLOCATION("SWA:1") @@ -272,7 +280,6 @@ static INPUT_PORTS_START( wpc_an ) PORT_DIPSETTING(0xd0,"Europe") PORT_DIPSETTING(0xe0,"Spain") PORT_DIPSETTING(0xf0,"USA 2") - INPUT_PORTS_END @@ -458,8 +465,7 @@ ROM_START(dd_p7) ROM_RELOAD( 0x30000, 0x10000) ROM_LOAD("dude_u20.l1", 0x40000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) ROM_RELOAD( 0x50000, 0x10000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(dd_p06) @@ -472,13 +478,12 @@ ROM_START(dd_p06) ROM_RELOAD( 0x30000, 0x10000) ROM_LOAD("dude_u20.l1", 0x40000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) ROM_RELOAD( 0x50000, 0x10000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END -/*------------- +/*---------------- / Funhouse #50003 -/--------------*/ +/----------------*/ ROM_START(fh_l9) ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("funh_l9.rom", 0x10000, 0x40000, CRC(c8f90ff8) SHA1(8d200ea30a68f5e3ba1ac9232a516c44b765eb45)) @@ -495,8 +500,7 @@ ROM_START(fh_l9) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_l9b) @@ -515,8 +519,7 @@ ROM_START(fh_l9b) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_l2) @@ -535,8 +538,7 @@ ROM_START(fh_l2) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_l3) @@ -555,8 +557,7 @@ ROM_START(fh_l3) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_l4) @@ -575,8 +576,7 @@ ROM_START(fh_l4) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_l5) @@ -595,8 +595,7 @@ ROM_START(fh_l5) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_905h) @@ -615,8 +614,7 @@ ROM_START(fh_905h) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(fh_pa1) @@ -626,15 +624,13 @@ ROM_START(fh_pa1) ROM_LOAD("fh_u4.pa1", 0x00000, 0x20000, CRC(9f0a716d) SHA1(3d3ec250b0b4344844ad8ce5bcbb326f934b22d3)) ROM_LOAD("fh_u19.pa1", 0x20000, 0x20000, CRC(b0fb5ddf) SHA1(138c2aa283f7ced90637e981063f520bf46c57df)) ROM_LOAD("fh_u20.pa1", 0x40000, 0x20000, CRC(bb864f78) SHA1(ed861bd5df382e7efac103a1acb3d810ee4b15dc)) - - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END -/*----------------- +/*------------------------- / Harley Davidson #20001 -/------------------*/ +/-------------------------*/ ROM_START(hd_l3) ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("harly_l3.rom", 0x10000, 0x20000, CRC(65f2e0b4) SHA1(a44216c13b9f9adf4161ff6f9eeceba28ef37963)) @@ -647,8 +643,7 @@ ROM_START(hd_l3) ROM_RELOAD( 0x080000 + 0x20000, 0x20000) ROM_RELOAD( 0x080000 + 0x40000, 0x20000) ROM_RELOAD( 0x080000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(hd_l2) @@ -663,8 +658,7 @@ ROM_START(hd_l2) ROM_RELOAD( 0x080000 + 0x20000, 0x20000) ROM_RELOAD( 0x080000 + 0x40000, 0x20000) ROM_RELOAD( 0x080000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(hd_l1) @@ -679,13 +673,12 @@ ROM_START(hd_l1) ROM_RELOAD( 0x080000 + 0x20000, 0x20000) ROM_RELOAD( 0x080000 + 0x40000, 0x20000) ROM_RELOAD( 0x080000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END -/*----------------- -/ The Machine: Bride of Pinbot #50001 -/------------------*/ +/*-------------------------------------- +/ The Machine: Bride of Pinbot #50002 +/--------------------------------------*/ ROM_START(bop_l7) ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("tmbopl_7.rom", 0x10000, 0x40000, CRC(773e1488) SHA1(36e8957b3903b99844a76bf15ba393b17db0db59)) @@ -702,8 +695,7 @@ ROM_START(bop_l7) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(bop_l6) @@ -722,8 +714,7 @@ ROM_START(bop_l6) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(bop_l5) @@ -742,8 +733,7 @@ ROM_START(bop_l5) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(bop_l4) @@ -762,8 +752,7 @@ ROM_START(bop_l4) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(bop_l3) @@ -782,8 +771,7 @@ ROM_START(bop_l3) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END ROM_START(bop_l2) @@ -802,20 +790,17 @@ ROM_START(bop_l2) ROM_RELOAD( 0x100000 + 0x20000, 0x20000) ROM_RELOAD( 0x100000 + 0x40000, 0x20000) ROM_RELOAD( 0x100000 + 0x60000, 0x20000) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END -/*=========== -/ Test Fixture Alphanumeric -/============*/ +/*------------------------------------ +/ Test Fixture Alphanumeric (#584-T) +/------------------------------------*/ ROM_START(tfa_13) ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("u6_l3.rom", 0x10000, 0x20000, CRC(bf4a37b5) SHA1(91b8bba6182e818a34252a4b2a0b86a2a44d9c42)) - ROM_REGION(0x180000, "sound1",0) - ROM_FILL(0x0000,0x180000,0x00) - ROM_REGION(0x8000, "fixed", 0) - ROM_FILL(0x0000,0x8000,0x00) + ROM_REGION(0x180000, "sound1",ROMREGION_ERASE00) + ROM_REGION(0x8000, "fixed", ROMREGION_ERASE00) ROM_END GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, init_wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp index 61c2fcdd9b7..bd668bee898 100644 --- a/src/mame/drivers/wpc_dcs.cpp +++ b/src/mame/drivers/wpc_dcs.cpp @@ -442,9 +442,9 @@ void wpc_dcs_state::wpc_dcs(machine_config &config) DCS_AUDIO_8K(config, dcs, 0); } -/*------------- +/*---------------------- / Demolition Man #50028 -/--------------*/ +/----------------------*/ ROM_START(dm_pa2) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("u6-pa2.rom", 0x00000, 0x80000, CRC(862be56a) SHA1(95e1f899963762cb1a9de4eb5d6d57183ed1da38)) @@ -533,9 +533,9 @@ ROM_START(dm_h6) ROM_LOAD16_BYTE("dm.9", 0xe00000, 0x080000, CRC(4c1a34e8) SHA1(3eacc3c63b2d9db57fc86447f1408635b987ef69)) ROM_END -/*----------------- +/*---------------------- / Indiana Jones #50017 -/------------------*/ +/----------------------*/ ROM_START(ij_l7) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("ijone_l7.rom", 0x00000, 0x80000, CRC(4658c877) SHA1(b47ab064ff954bd182919f714ed8930cf0bed896)) @@ -614,9 +614,9 @@ ROM_START(ij_l3) ROM_LOAD16_BYTE("ijsnd_l3.u8", 0xc00000, 0x080000, CRC(45e35bd7) SHA1(782b406be341d55d22a96acb8c2459f3058940df)) ROM_END -/*----------------- +/*-------------------- / Judge Dredd #20020 -/------------------*/ +/--------------------*/ ROM_START(jd_l7) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("jdrd_l7.rom", 0x00000, 0x80000, CRC(87b2a5c3) SHA1(e487e9ff78353ee96d5fb5f036b1a6cef586f5b4)) @@ -687,9 +687,9 @@ ROM_START(jd_l4) ROM_LOAD16_BYTE("jdsnd_u9.bin", 0xe00000, 0x080000, CRC(885b7c70) SHA1(be3bb42aeda3020a72c527f52c5330d0bafa9966)) ROM_END -/*----------------- +/*------------------------------- / Popeye Saves The Earth #50022 -/------------------*/ +/-------------------------------*/ ROM_START(pop_lx5) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("peye_lx5.rom", 0x00000, 0x80000, CRC(ee1f7a67) SHA1(f02518546de93256b00bc1f5b92452a10f9e56dd)) @@ -727,9 +727,9 @@ ROM_START(pop_la4) ROM_END -/*----------------- +/*-------------------------------------- / Star Trek: The Next Generation #50023 -/------------------*/ +/--------------------------------------*/ ROM_START(sttng_l7) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("trek_lx7.rom", 0x00000, 0x80000, CRC(d439fdbb) SHA1(12d1c72cd6cc18db53e51ebb4c1e55ca9bcf9908)) @@ -874,9 +874,9 @@ ROM_START(sttng_l5) ROM_END -/*------------- -/ Addams Family Values (Coin Dropper) -/--------------*/ +/*------------------------------------------- +/ Addams Family Values #60022 (Coin Dropper) +/-------------------------------------------*/ ROM_START(afv_l4) ROM_REGION(0x80000, "maincpu", 0) ROM_LOAD("afv_u6.l4", 0x00000, 0x80000, CRC(37369339) SHA1(e44a91faca80ffa00d6db78e2df7aa9bf14e957c)) diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp index 17b92cdaa43..67559f056f0 100644 --- a/src/mame/drivers/wpc_dot.cpp +++ b/src/mame/drivers/wpc_dot.cpp @@ -1,8 +1,34 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert, Miodrag Milanovic +/****************************************************************************************** +PINBALL +Williams WPC Dot Matrix -/* Williams WPC Dot Matrix */ +Since NVRAM is not working, when it starts factory settings will be applied. + Press F3, and wait for the game attract mode to commence. +Here are the key codes to enable play: + +Game NUM Start game End ball +----------------------------------------------------------------------------------------------- +**** Bally (Midway) **** +Gilligan's Island 20003 Hold BC hit 1 BC +The Party Zone 20004 Hold PGDN PGUP END hit 1 PGDN PGUP END +**** Williams **** +Hurricane 50012 Hold BCD hit 1 BCD and wait +Terminator 2: Judgement Day 50013 Hold ABC hit 1 ABC +**** Novelty Games **** +Slugfest 60001 O +Hot Shot 60017 1 then C then A. Keep hitting I to score a basket. +Slugfest 2 60021 not emulated but probably same as Slugfest. + +ToDo: +- NVRAM +- Outputs +- Mechanical sounds +- Party Zone speech is barely audible - should be louder than the music + +*********************************************************************************************/ #include "emu.h" #include "includes/wpc_dot.h" #include "screen.h" @@ -25,85 +51,95 @@ void wpc_dot_state::wpc_dot_map(address_map &map) } static INPUT_PORTS_START( wpc_dot ) - PORT_START("INP0") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("INP1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LSHIFT) // left flipper - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RSHIFT) // right flipper + PORT_START("X0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Right Flipper") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Left Flipper") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP15") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP16") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP17") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP18") - PORT_START("INP2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) // slam tilt - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_TOGGLE // coin door - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) // always closed - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) + PORT_START("X1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE PORT_NAME("Coin Door") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Ticket Dispenser") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) // always closed + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP25") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP26") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP27") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP28") - PORT_START("INP4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) + PORT_START("X2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP31") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP32") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP33") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP34") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP35") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP36") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP37") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP38") - PORT_START("INP8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) + PORT_START("X3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP41") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP42") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP43") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP44") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP45") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP46") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP47") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("INP48") - PORT_START("INP10") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN) + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP51") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP52") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("INP53") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP54") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP55") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP56") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP57") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP58") - PORT_START("INP20") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O) + PORT_START("X5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP61") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP62") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP63") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP64") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP65") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP66") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("INP67") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("INP68") - PORT_START("INP40") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT) - PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("X6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("INP71") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("INP72") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_NAME("INP73") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("INP74") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("INP75") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_END) PORT_NAME("INP76") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("INP77") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("INP78") - PORT_START("INP80") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("X7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP81") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP82") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP83") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP84") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP85") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP86") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP87") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("INP88") PORT_START("COIN") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_DEL_PAD) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_0_PAD) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_CODE(KEYCODE_PLUS_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_ENTER_PAD) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_ENTER_PAD) PORT_START("DIPS") PORT_DIPNAME(0x01,0x01,"Switch 1") PORT_DIPLOCATION("SWA:1") @@ -250,21 +286,16 @@ WRITE_LINE_MEMBER(wpc_dot_state::wpc_firq_w) uint32_t wpc_dot_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { uint32_t offset = (m_wpc->get_visible_page() * 0x200); + uint32_t col[2] { rgb_t(0x00,0x00,0x00), rgb_t(0xff,0xaa,0x00) }; for(uint8_t y=0;y<32;y++) // scanline { for(uint8_t x=0;x<128;x+=8) // column { + assert(offset >= 0 && offset < std::size(m_dmdram)); for(uint8_t bit=0;bit<8;bit++) // bits - { - assert(offset >= 0 && offset < std::size(m_dmdram)); - uint32_t col; - if(m_dmdram[offset] & (1<read(); -// for(x=0;x<8;x++) -// { -// if(m_switch_col & (1<read(); + } break; case WPC_SWCOINDOOR: ret = ~ioport(":COIN")->read(); diff --git a/src/mame/machine/wpc.h b/src/mame/machine/wpc.h index a7419aa9100..8a87278bacf 100644 --- a/src/mame/machine/wpc.h +++ b/src/mame/machine/wpc.h @@ -140,6 +140,7 @@ private: devcb_write8 m_sounds11_w; devcb_write8 m_bank_w; devcb_write8 m_dmdbank_w; + required_ioport_array<8> m_io_keyboard; }; DECLARE_DEVICE_TYPE(WPCASIC, wpc_device)