trunk/src/mame/drivers/inder.c
| r31888 | r31889 | |
| 6 | 6 | All manuals are in Spanish (including the 'English' ones), so some guesswork will be needed. |
| 7 | 7 | The schematics for Brave Team, Canasta are too blurry to read. |
| 8 | 8 | |
| 9 | Setting up: |
| 10 | - First time run, the displays will all show zero. Take the opportunity to set up the dips. Then |
| 11 | exit and restart. The game will be working. |
| 12 | |
| 13 | Status: |
| 14 | - Brave Team: working |
| 15 | - Others: still to be worked on |
| 16 | |
| 17 | |
| 9 | 18 | ********************************************************************************************************/ |
| 10 | 19 | |
| 11 | 20 | #include "machine/genpin.h" |
| 12 | 21 | #include "cpu/z80/z80.h" |
| 13 | 22 | #include "machine/i8255.h" |
| 23 | #include "sound/sn76496.h" |
| 14 | 24 | #include "inder.lh" |
| 15 | 25 | |
| 16 | 26 | class inder_state : public genpin_class |
| r31888 | r31889 | |
| 19 | 29 | inder_state(const machine_config &mconfig, device_type type, const char *tag) |
| 20 | 30 | : genpin_class(mconfig, type, tag) |
| 21 | 31 | , m_maincpu(*this, "maincpu") |
| 32 | , m_sn(*this, "sn") |
| 22 | 33 | , m_switches(*this, "SW") |
| 23 | 34 | { } |
| 24 | 35 | |
| 25 | | DECLARE_READ8_MEMBER(io_r); |
| 26 | | DECLARE_WRITE8_MEMBER(io_w); |
| 36 | DECLARE_READ8_MEMBER(sw_r); |
| 37 | DECLARE_WRITE8_MEMBER(sw_w); |
| 38 | DECLARE_WRITE8_MEMBER(sol_w); |
| 39 | DECLARE_WRITE8_MEMBER(sn_w); |
| 40 | DECLARE_WRITE8_MEMBER(lamp_w) { }; |
| 27 | 41 | DECLARE_WRITE8_MEMBER(disp_w); |
| 28 | 42 | DECLARE_DRIVER_INIT(inder); |
| 29 | 43 | private: |
| r31888 | r31889 | |
| 31 | 45 | UINT8 m_segment[5]; |
| 32 | 46 | virtual void machine_reset(); |
| 33 | 47 | required_device<cpu_device> m_maincpu; |
| 48 | optional_device<sn76489_device> m_sn; |
| 34 | 49 | required_ioport_array<11> m_switches; |
| 35 | 50 | }; |
| 36 | 51 | |
| r31888 | r31889 | |
| 39 | 54 | AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w) |
| 40 | 55 | AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114 |
| 41 | 56 | AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed |
| 42 | | AM_RANGE(0x4800, 0x480a) AM_READWRITE(io_r,io_w) |
| 57 | AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w) |
| 58 | AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_w) |
| 59 | AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w) |
| 60 | AM_RANGE(0x4b00, 0x4b00) AM_WRITE(sn_w) |
| 43 | 61 | //AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write) |
| 44 | 62 | ADDRESS_MAP_END |
| 45 | 63 | |
| 46 | 64 | static INPUT_PORTS_START( inder ) |
| 47 | | PORT_START("TEST") |
| 48 | | //PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, inder_state, self_test, 0) |
| 49 | | //PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, inder_state, activity_test, 0) |
| 50 | | |
| 51 | 65 | PORT_START("SW.0") |
| 52 | | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1") |
| 53 | | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 54 | | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 55 | | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 56 | | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 57 | | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 58 | | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 59 | | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 60 | | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 61 | | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 62 | | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 63 | | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 64 | | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 65 | | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 66 | | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 67 | | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 68 | | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 69 | | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 70 | | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 71 | | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 72 | | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 73 | | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 74 | | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 75 | | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 76 | | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 77 | | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 78 | | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 79 | | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 80 | | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 81 | | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 82 | | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 83 | | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 84 | | PORT_DIPNAME( 0x60, 0x40, "Award for beating high score") |
| 85 | | PORT_DIPSETTING( 0x00, "Nothing") |
| 86 | | PORT_DIPSETTING( 0x20, "1 free game") |
| 87 | | PORT_DIPSETTING( 0x40, "2 free games") |
| 88 | | PORT_DIPSETTING( 0x60, "3 free games") |
| 89 | | PORT_DIPNAME( 0x80, 0x00, "Melody option 1") |
| 90 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 91 | | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 66 | PORT_DIPNAME( 0x03, 0x01, "Coin Slot 1") // sw G,H |
| 67 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C )) // slot 2: 1 moneda 4 partidas // selection 00 is same as 01 |
| 68 | PORT_DIPSETTING( 0x02, DEF_STR( 4C_5C )) // slot 2: 1 moneda 5 partidas |
| 69 | PORT_DIPSETTING( 0x03, "4 moneda 6 partidas") // slot 2: 1 moneda 6 partidas |
| 70 | PORT_DIPNAME( 0x08, 0x08, "Balls") // sw E |
| 71 | PORT_DIPSETTING( 0x08, "3") |
| 72 | PORT_DIPSETTING( 0x00, "5") |
| 73 | PORT_DIPNAME( 0x30, 0x20, "Points for free game") // sw C,D |
| 74 | PORT_DIPSETTING( 0x00, "850000") |
| 75 | PORT_DIPSETTING( 0x10, "800000") |
| 76 | PORT_DIPSETTING( 0x20, "750000") |
| 77 | PORT_DIPSETTING( 0x30, "700000") |
| 78 | PORT_BIT( 0xc4, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 92 | 79 | |
| 93 | 80 | PORT_START("SW.1") |
| 94 | | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3") |
| 95 | | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 96 | | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 97 | | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 98 | | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 99 | | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 100 | | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 101 | | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 102 | | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 103 | | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 104 | | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 105 | | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 106 | | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 107 | | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 108 | | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 109 | | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 110 | | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 111 | | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 112 | | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 113 | | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 114 | | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 115 | | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 116 | | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 117 | | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 118 | | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 119 | | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 120 | | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 121 | | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 122 | | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 123 | | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 124 | | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 125 | | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 126 | | PORT_DIPNAME( 0x60, 0x60, "Award") |
| 127 | | PORT_DIPSETTING( 0x00, "Nothing") |
| 128 | | PORT_DIPSETTING( 0x40, "Extra Ball") |
| 129 | | PORT_DIPSETTING( 0x60, "Free Game") |
| 130 | | PORT_DIPNAME( 0x80, 0x00, "Balls") |
| 131 | | PORT_DIPSETTING( 0x00, "3") |
| 132 | | PORT_DIPSETTING( 0x80, "5") |
| 81 | PORT_DIPNAME( 0x03, 0x03, "High Score") //"Handicap" // sw O,P |
| 82 | PORT_DIPSETTING( 0x00, "990000") |
| 83 | PORT_DIPSETTING( 0x01, "950000") |
| 84 | PORT_DIPSETTING( 0x02, "900000") |
| 85 | PORT_DIPSETTING( 0x03, "850000") |
| 86 | PORT_DIPNAME( 0x04, 0x00, "Maximum Credits") // sw N |
| 87 | PORT_DIPSETTING( 0x04, "10") |
| 88 | PORT_DIPSETTING( 0x00, "20") |
| 89 | PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 133 | 90 | |
| 134 | | PORT_START("SW.2") |
| 135 | | PORT_DIPNAME( 0x07, 0x02, "Maximum Credits") |
| 136 | | PORT_DIPSETTING( 0x00, "5") |
| 137 | | PORT_DIPSETTING( 0x01, "10") |
| 138 | | PORT_DIPSETTING( 0x02, "15") |
| 139 | | PORT_DIPSETTING( 0x03, "20") |
| 140 | | PORT_DIPSETTING( 0x04, "25") |
| 141 | | PORT_DIPSETTING( 0x05, "30") |
| 142 | | PORT_DIPSETTING( 0x06, "35") |
| 143 | | PORT_DIPSETTING( 0x07, "40") |
| 144 | | PORT_DIPNAME( 0x08, 0x08, "Credits displayed") |
| 145 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 146 | | PORT_DIPSETTING( 0x08, DEF_STR( On )) |
| 147 | | PORT_DIPNAME( 0x10, 0x10, "Match") |
| 148 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 149 | | PORT_DIPSETTING( 0x10, DEF_STR( On )) |
| 150 | | PORT_DIPNAME( 0x20, 0x00, "S22 (game specific)") |
| 151 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 152 | | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 153 | | PORT_DIPNAME( 0x40, 0x00, "S23 (game specific)") |
| 154 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 155 | | PORT_DIPSETTING( 0x40, DEF_STR( On )) |
| 156 | | PORT_DIPNAME( 0x80, 0x00, "S24 (game specific)") |
| 157 | | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 158 | | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 91 | PORT_START("SW.2") // bank of unused dipswitches |
| 92 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 159 | 93 | |
| 160 | 94 | PORT_START("SW.3") |
| 161 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) |
| 162 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
| 163 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) |
| 164 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) |
| 165 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
| 166 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 ) |
| 167 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT ) |
| 168 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X) |
| 95 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 169 | 96 | |
| 170 | 97 | PORT_START("SW.4") |
| 171 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 ) |
| 172 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| 173 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) |
| 174 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L) |
| 175 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) |
| 176 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) |
| 177 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) |
| 178 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt") |
| 98 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 179 | 99 | |
| 180 | | PORT_START("SW.5") |
| 181 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 182 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
| 183 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
| 184 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
| 185 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G) |
| 186 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H) |
| 187 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J) |
| 188 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K) |
| 100 | PORT_START("SW.5") // Contactos 50-57 |
| 101 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // "Monedero A" |
| 102 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // "Monedero B" |
| 103 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 104 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) // "Falta" |
| 105 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) // "Pulsador Partidas" |
| 106 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Reset") // "Puesta a cero" |
| 107 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Accounting info") // "Test economico" |
| 108 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Test") // "Test tecnico" |
| 189 | 109 | |
| 190 | | PORT_START("SW.6") |
| 191 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q) |
| 192 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W) |
| 193 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E) |
| 194 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R) |
| 195 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y) |
| 196 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U) |
| 197 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I) |
| 198 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O) |
| 110 | PORT_START("SW.6") // 60-67 |
| 111 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) |
| 112 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) |
| 113 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) |
| 114 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) |
| 115 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) |
| 116 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) |
| 117 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) |
| 118 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O) |
| 199 | 119 | |
| 200 | | PORT_START("SW.7") |
| 201 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z) |
| 202 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C) |
| 203 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V) |
| 204 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B) |
| 205 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N) |
| 206 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M) |
| 207 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) |
| 208 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) |
| 120 | PORT_START("SW.7") // 70-77 |
| 121 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 122 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
| 123 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
| 124 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
| 125 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) |
| 126 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) |
| 127 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) |
| 128 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) |
| 209 | 129 | |
| 210 | | PORT_START("SW.8") |
| 211 | | PORT_START("SW.9") |
| 130 | PORT_START("SW.8") // 80-87 |
| 131 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) |
| 132 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) |
| 133 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) |
| 134 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) |
| 135 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) |
| 136 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) |
| 137 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) |
| 138 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) |
| 139 | |
| 140 | PORT_START("SW.9") // 90-97 |
| 141 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) |
| 142 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole") |
| 143 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) |
| 144 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
| 145 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) |
| 146 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) |
| 147 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) |
| 148 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
| 149 | |
| 212 | 150 | PORT_START("SW.10") |
| 151 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 213 | 152 | INPUT_PORTS_END |
| 214 | 153 | |
| 215 | | READ8_MEMBER( inder_state::io_r ) |
| 154 | READ8_MEMBER( inder_state::sw_r ) |
| 216 | 155 | { |
| 217 | 156 | return m_switches[m_row]->read(); |
| 218 | 157 | } |
| 219 | 158 | |
| 220 | | WRITE8_MEMBER( inder_state::io_w ) |
| 159 | WRITE8_MEMBER( inder_state::sw_w ) |
| 221 | 160 | { |
| 222 | 161 | m_row = offset; |
| 223 | 162 | } |
| 224 | 163 | |
| 164 | WRITE8_MEMBER( inder_state::sn_w ) |
| 165 | { |
| 166 | m_sn->write(space, 0, BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7)); |
| 167 | } |
| 168 | |
| 169 | // "bobinas" |
| 170 | WRITE8_MEMBER( inder_state::sol_w ) |
| 171 | { |
| 172 | if ((data & 0xee) && BIT(data, 4)) // solenoid selected & activated |
| 173 | { |
| 174 | if BIT(data, 1) |
| 175 | m_samples->start(0, 7); // left sling near bumpers |
| 176 | |
| 177 | if BIT(data, 2) |
| 178 | m_samples->start(1, 7); // right sling near bumpers |
| 179 | |
| 180 | if BIT(data, 3) |
| 181 | m_samples->start(0, 5); // outhole |
| 182 | |
| 183 | if BIT(data, 5) |
| 184 | m_samples->start(2, 0); // left bumper |
| 185 | |
| 186 | if BIT(data, 6) |
| 187 | m_samples->start(3, 0); // right bumper |
| 188 | |
| 189 | if BIT(data, 7) |
| 190 | m_samples->start(4, 0); // middle bumper |
| 191 | } |
| 192 | } |
| 193 | |
| 225 | 194 | WRITE8_MEMBER( inder_state::disp_w ) |
| 226 | 195 | { |
| 227 | 196 | UINT8 i; |
| r31888 | r31889 | |
| 258 | 227 | |
| 259 | 228 | /* Sound */ |
| 260 | 229 | MCFG_FRAGMENT_ADD( genpin_audio ) |
| 230 | MCFG_SPEAKER_STANDARD_MONO("snvol") |
| 231 | MCFG_SOUND_ADD("sn", SN76489, XTAL_8MHz / 2) // jumper choice of 2 or 4 MHz |
| 232 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "snvol", 2.0) |
| 261 | 233 | |
| 262 | 234 | /* Devices */ |
| 263 | 235 | MCFG_DEVICE_ADD("ppi", I8255A, 0 ) |
| r31888 | r31889 | |
| 424 | 396 | ROM_LOAD("sound_m3.bin", 0x40000, 0x20000, CRC(4d9f5ed2) SHA1(bc6b7c70369c25eddddac5304497f30cee7675d4)) |
| 425 | 397 | ROM_END |
| 426 | 398 | |
| 427 | | GAME(1985, brvteam, 0, inder, inder, inder_state, inder, ROT0, "Inder", "Brave Team", GAME_IS_SKELETON_MECHANICAL) |
| 399 | GAME(1985, brvteam, 0, inder, inder, inder_state, inder, ROT0, "Inder", "Brave Team", GAME_MECHANICAL) |
| 428 | 400 | GAME(1986, canasta, 0, inder, inder, inder_state, inder, ROT0, "Inder", "Canasta '86'", GAME_IS_SKELETON_MECHANICAL) |
| 429 | 401 | GAME(1986, lapbylap, 0, inder, inder, inder_state, inder, ROT0, "Inder", "Lap By Lap", GAME_IS_SKELETON_MECHANICAL) |
| 430 | 402 | GAME(1987, pinmoonl, 0, inder, inder, inder_state, inder, ROT0, "Inder", "Moon Light (Inder)", GAME_IS_SKELETON_MECHANICAL) |