trunk/src/mame/drivers/spinb.c
| r32165 | r32166 | |
| 1 | /*************************************************************************************************** |
| 1 | 2 | |
| 2 | | #include "emu.h" |
| 3 | PINBALL |
| 4 | Spinball (previously Inder) |
| 5 | |
| 6 | Hardware is much the same as Inder, except the digital display is replaced by a DMD controlled by |
| 7 | a i8031. |
| 8 | |
| 9 | Status |
| 10 | - Verne's World has different hardware, does nothing |
| 11 | - The others make a horrible noise when 5 pressed, nothing else, no display. |
| 12 | - Code for inputs and outputs is wrong (copied from inder.c) |
| 13 | - There are 2 sound cards (one for effects and one for music), however looks like they |
| 14 | both receive the same commands? Diagram only shows J9 for sound control. |
| 15 | - The DMD uses a i8031 but no luck getting it to do anything so far. |
| 16 | - There are mistakes in the sound board schematic: IC14 pin12 goes to IC5 pin13 only. IC16 pin 22 |
| 17 | is the CS0 line only. So, they are not joined but are separate tracks. Also, according to PinMAME, |
| 18 | the outputs of IC11 are all wrong. They should be (from top to bottom): A16, A17, A18, NC, NC, |
| 19 | CS2, CS1, CS0. |
| 20 | |
| 21 | |
| 22 | ****************************************************************************************************/ |
| 23 | |
| 24 | #include "machine/genpin.h" |
| 25 | #include "cpu/z80/z80.h" |
| 3 | 26 | #include "cpu/mcs51/mcs51.h" |
| 27 | #include "machine/i8255.h" |
| 28 | #include "sound/ay8910.h" |
| 29 | #include "sound/msm5205.h" |
| 30 | #include "machine/7474.h" |
| 4 | 31 | |
| 5 | | class spinb_state : public driver_device |
| 32 | class spinb_state : public genpin_class |
| 6 | 33 | { |
| 7 | 34 | public: |
| 8 | 35 | spinb_state(const machine_config &mconfig, device_type type, const char *tag) |
| 9 | | : driver_device(mconfig, type, tag), |
| 10 | | m_maincpu(*this, "maincpu") |
| 36 | : genpin_class(mconfig, type, tag) |
| 37 | , m_maincpu(*this, "maincpu") |
| 38 | , m_audiocpu(*this, "audiocpu") |
| 39 | , m_musiccpu(*this, "musiccpu") |
| 40 | , m_dmdcpu(*this, "dmdcpu") |
| 41 | , m_msm_a(*this, "msm_a") |
| 42 | , m_msm_m(*this, "msm_m") |
| 43 | , m_ic5a(*this, "ic5a") |
| 44 | , m_ic5m(*this, "ic5m") |
| 45 | , m_switches(*this, "SW") |
| 11 | 46 | { } |
| 12 | 47 | |
| 13 | | protected: |
| 14 | | |
| 15 | | // devices |
| 48 | DECLARE_WRITE8_MEMBER(p1_w); |
| 49 | DECLARE_READ8_MEMBER(p3_r); |
| 50 | DECLARE_WRITE8_MEMBER(p3_w); |
| 51 | DECLARE_READ8_MEMBER(ppia_c_r); |
| 52 | DECLARE_WRITE8_MEMBER(ppia_a_w); |
| 53 | DECLARE_WRITE8_MEMBER(ppia_b_w); |
| 54 | DECLARE_WRITE8_MEMBER(ppia_c_w); |
| 55 | DECLARE_READ8_MEMBER(ppim_c_r); |
| 56 | DECLARE_WRITE8_MEMBER(ppim_a_w); |
| 57 | DECLARE_WRITE8_MEMBER(ppim_b_w); |
| 58 | DECLARE_WRITE8_MEMBER(ppim_c_w); |
| 59 | DECLARE_WRITE8_MEMBER(ppi60a_w); |
| 60 | DECLARE_WRITE8_MEMBER(ppi60b_w); |
| 61 | DECLARE_WRITE8_MEMBER(ppi64c_w); |
| 62 | DECLARE_READ8_MEMBER(sw_r); |
| 63 | DECLARE_WRITE8_MEMBER(sw_w); |
| 64 | DECLARE_READ8_MEMBER(sndcmd_r); |
| 65 | DECLARE_WRITE8_MEMBER(sndbank_a_w); |
| 66 | DECLARE_WRITE8_MEMBER(sndbank_m_w); |
| 67 | DECLARE_WRITE8_MEMBER(sndcmd_w); |
| 68 | DECLARE_WRITE8_MEMBER(lamp_w) { }; |
| 69 | DECLARE_WRITE8_MEMBER(lamp1_w) { }; |
| 70 | DECLARE_WRITE8_MEMBER(volume_w) { }; |
| 71 | DECLARE_WRITE8_MEMBER(disp_w); |
| 72 | DECLARE_WRITE_LINE_MEMBER(ic5a_w); |
| 73 | DECLARE_WRITE_LINE_MEMBER(ic5m_w); |
| 74 | DECLARE_WRITE_LINE_MEMBER(vck_a_w); |
| 75 | DECLARE_WRITE_LINE_MEMBER(vck_m_w); |
| 76 | DECLARE_DRIVER_INIT(spinb); |
| 77 | private: |
| 78 | bool m_pc0a; |
| 79 | bool m_pc0m; |
| 80 | UINT8 m_game; |
| 81 | UINT8 m_portc_a; |
| 82 | UINT8 m_portc_m; |
| 83 | UINT8 m_row; |
| 84 | UINT8 m_segment[8]; |
| 85 | UINT8 m_sndcmd; |
| 86 | UINT8 m_sndbank_a; |
| 87 | UINT8 m_sndbank_m; |
| 88 | UINT32 m_sound_addr_a; |
| 89 | UINT32 m_sound_addr_m; |
| 90 | UINT8 *m_p_audio; |
| 91 | UINT8 *m_p_music; |
| 92 | virtual void machine_reset(); |
| 16 | 93 | required_device<cpu_device> m_maincpu; |
| 17 | | |
| 18 | | // driver_device overrides |
| 19 | | virtual void machine_reset(); |
| 20 | | public: |
| 21 | | DECLARE_DRIVER_INIT(spinb); |
| 94 | required_device<cpu_device> m_audiocpu; |
| 95 | required_device<cpu_device> m_musiccpu; |
| 96 | required_device<cpu_device> m_dmdcpu; |
| 97 | required_device<msm5205_device> m_msm_a; |
| 98 | required_device<msm5205_device> m_msm_m; |
| 99 | required_device<ttl7474_device> m_ic5a; |
| 100 | required_device<ttl7474_device> m_ic5m; |
| 101 | required_ioport_array<11> m_switches; |
| 22 | 102 | }; |
| 23 | 103 | |
| 24 | | |
| 25 | 104 | static ADDRESS_MAP_START( spinb_map, AS_PROGRAM, 8, spinb_state ) |
| 26 | | AM_RANGE(0x0000, 0xffff) AM_NOP |
| 105 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 106 | AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("nvram") // 6164, battery-backed |
| 107 | AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write) |
| 108 | AM_RANGE(0x6400, 0x6403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write) |
| 109 | AM_RANGE(0x6800, 0x6803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write) |
| 110 | AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write) |
| 111 | AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w) |
| 112 | AM_RANGE(0x6c40, 0x6c45) AM_MIRROR(0x1300) AM_WRITE(lamp1_w) |
| 113 | AM_RANGE(0x6c60, 0x6c60) AM_MIRROR(0x1300) AM_WRITE(disp_w) |
| 114 | AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP |
| 27 | 115 | ADDRESS_MAP_END |
| 28 | 116 | |
| 117 | static ADDRESS_MAP_START( spinb_audio_map, AS_PROGRAM, 8, spinb_state ) |
| 118 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 119 | AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164 |
| 120 | AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppia", i8255_device, read, write) |
| 121 | AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_a_w) |
| 122 | AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r) |
| 123 | ADDRESS_MAP_END |
| 124 | |
| 125 | static ADDRESS_MAP_START( spinb_music_map, AS_PROGRAM, 8, spinb_state ) |
| 126 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 127 | AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164 |
| 128 | AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppim", i8255_device, read, write) |
| 129 | AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_m_w) |
| 130 | AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r) |
| 131 | AM_RANGE(0xA000, 0xA000) AM_WRITE(volume_w) |
| 132 | ADDRESS_MAP_END |
| 133 | |
| 134 | static ADDRESS_MAP_START(dmd_mem, AS_PROGRAM, 8, spinb_state) |
| 135 | AM_RANGE(0x0000, 0xffff) AM_ROM |
| 136 | ADDRESS_MAP_END |
| 137 | |
| 138 | static ADDRESS_MAP_START(dmd_io, AS_IO, 8, spinb_state) |
| 139 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 140 | AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(p1_w) |
| 141 | AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE(p3_r, p3_w) |
| 142 | ADDRESS_MAP_END |
| 143 | |
| 29 | 144 | static INPUT_PORTS_START( spinb ) |
| 145 | PORT_START("SW.0") |
| 146 | PORT_DIPNAME( 0x80, 0x80, "Balls") |
| 147 | PORT_DIPSETTING( 0x80, "3") |
| 148 | PORT_DIPSETTING( 0x00, "5") |
| 149 | PORT_DIPNAME( 0x30, 0x30, "Coin Slot 1") |
| 150 | PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C )) // slot 2: 1 moneda 4 partidas |
| 151 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C )) // and 4c_3c; slot 2: 1 moneda 3 partidas |
| 152 | PORT_DIPNAME( 0x0c, 0x0c, "Points for free game") |
| 153 | PORT_DIPSETTING( 0x0c, "2600000") |
| 154 | PORT_DIPSETTING( 0x08, "3000000") |
| 155 | PORT_DIPSETTING( 0x04, "3400000") |
| 156 | PORT_DIPSETTING( 0x00, "3800000") |
| 157 | |
| 158 | PORT_START("SW.1") |
| 159 | PORT_DIPNAME( 0x30, 0x30, "High Score") //"Handicap" |
| 160 | PORT_DIPSETTING( 0x30, "4800000") |
| 161 | PORT_DIPSETTING( 0x20, "5000000") |
| 162 | PORT_DIPSETTING( 0x10, "5200000") |
| 163 | PORT_DIPSETTING( 0x00, "5400000") |
| 164 | PORT_DIPNAME( 0x08, 0x08, "Especial en Picabolas") |
| 165 | PORT_DIPSETTING( 0x08, "1st Derribo") |
| 166 | PORT_DIPSETTING( 0x00, "2nd Derribo") |
| 167 | PORT_DIPNAME( 0x04, 0x04, "Bola Extra En Rampas") |
| 168 | PORT_DIPSETTING( 0x04, "4 dianas") |
| 169 | PORT_DIPSETTING( 0x00, "2 dianas") |
| 170 | PORT_BIT( 0xc3, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 171 | |
| 172 | PORT_START("SW.2") |
| 173 | PORT_DIPNAME( 0x04, 0x04, "Quita bola extra en passillos 1,2,y 3") |
| 174 | PORT_DIPSETTING( 0x04, DEF_STR(No)) |
| 175 | PORT_DIPSETTING( 0x00, DEF_STR(Yes)) |
| 176 | PORT_BIT( 0xfb, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 177 | |
| 178 | PORT_START("SW.3") |
| 179 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) // "Monedero A" |
| 180 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) // "Monedero B" |
| 181 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) |
| 182 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_TILT ) // "Falta" |
| 183 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) // "Pulsador Partidas" |
| 184 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE3 ) PORT_NAME("Reset") // "Puesta a cero" |
| 185 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("Accounting info") // "Test economico" |
| 186 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Test") // "Test tecnico" |
| 187 | |
| 188 | PORT_START("SW.4") |
| 189 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q) |
| 190 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W) |
| 191 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E) |
| 192 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R) |
| 193 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y) |
| 194 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U) |
| 195 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I) |
| 196 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O) |
| 197 | |
| 198 | PORT_START("SW.5") |
| 199 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 200 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
| 201 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
| 202 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
| 203 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G) |
| 204 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H) |
| 205 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J) |
| 206 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K) |
| 207 | |
| 208 | PORT_START("SW.6") |
| 209 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z) |
| 210 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C) |
| 211 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V) |
| 212 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B) |
| 213 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N) |
| 214 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M) |
| 215 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) |
| 216 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) |
| 217 | |
| 218 | PORT_START("SW.7") |
| 219 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L) |
| 220 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole") |
| 221 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) |
| 222 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
| 223 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) |
| 224 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) |
| 225 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) |
| 226 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
| 227 | |
| 228 | PORT_START("SW.8") |
| 229 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 230 | |
| 231 | PORT_START("SW.9") |
| 232 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 233 | |
| 234 | PORT_START("SW.10") |
| 235 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 30 | 236 | INPUT_PORTS_END |
| 31 | 237 | |
| 238 | /* |
| 239 | d0 = / enable RAM |
| 240 | d1 = display enable |
| 241 | d2 = RDATA ) |
| 242 | d3 = ROWCK ) to DMD |
| 243 | d4 = COLATCH ) |
| 244 | d5 = part of the data input circuit |
| 245 | d6 = STAT0 |
| 246 | d7 = STAT1 |
| 247 | */ |
| 248 | WRITE8_MEMBER( spinb_state::p1_w ) |
| 249 | { |
| 250 | } |
| 251 | |
| 252 | READ8_MEMBER( spinb_state::p3_r ) |
| 253 | { |
| 254 | return 0; |
| 255 | } |
| 256 | |
| 257 | /* |
| 258 | d0 = RXD - SDATA ) to DMD |
| 259 | d1 = TXD - DOTCK ) |
| 260 | d2 = Interrupt Input when data is coming from maincpu |
| 261 | d6 = R/W of RAM |
| 262 | d7 = OE of RAM , also part of data input circuit |
| 263 | */ |
| 264 | WRITE8_MEMBER( spinb_state::p3_w ) |
| 265 | { |
| 266 | } |
| 267 | |
| 268 | READ8_MEMBER( spinb_state::sw_r ) |
| 269 | { |
| 270 | return m_switches[m_row]->read(); |
| 271 | } |
| 272 | |
| 273 | WRITE8_MEMBER( spinb_state::sw_w ) |
| 274 | { |
| 275 | m_row = offset; |
| 276 | } |
| 277 | |
| 278 | WRITE8_MEMBER( spinb_state::sndcmd_w ) |
| 279 | { |
| 280 | m_sndcmd = data; |
| 281 | } |
| 282 | |
| 283 | READ8_MEMBER( spinb_state::sndcmd_r ) |
| 284 | { |
| 285 | return m_sndcmd; |
| 286 | } |
| 287 | |
| 288 | WRITE8_MEMBER( spinb_state::disp_w ) |
| 289 | { |
| 290 | UINT8 i; |
| 291 | if (offset < 8) |
| 292 | m_segment[offset] = data; |
| 293 | else |
| 294 | // From here, only used on old cpu board |
| 295 | if (offset > 0x40) |
| 296 | { |
| 297 | offset = (offset >> 3) & 7; |
| 298 | for (i = 0; i < 5; i++) |
| 299 | output_set_digit_value(i*10+offset, m_segment[i]); |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | WRITE8_MEMBER( spinb_state::ppi60a_w ) |
| 304 | { |
| 305 | if (data) |
| 306 | for (UINT8 i = 0; i < 8; i++) |
| 307 | if BIT(data, i) |
| 308 | m_row = i; |
| 309 | } |
| 310 | |
| 311 | // always 0 but we'll support it anyway |
| 312 | WRITE8_MEMBER( spinb_state::ppi60b_w ) |
| 313 | { |
| 314 | if (data & 7) |
| 315 | for (UINT8 i = 0; i < 3; i++) |
| 316 | if BIT(data, i) |
| 317 | m_row = i+8; |
| 318 | } |
| 319 | |
| 320 | WRITE8_MEMBER( spinb_state::ppi64c_w ) |
| 321 | { |
| 322 | UINT8 i; |
| 323 | data &= 15; |
| 324 | if BIT(data, 3) // 8 to 15 |
| 325 | { |
| 326 | data ^= 15; // now 7 to 0 |
| 327 | for (i = 0; i < 5; i++) |
| 328 | { |
| 329 | if ((m_game==1) && (i == 4)) // mundial,clown,250cc,atleta have credit and ball displays swapped |
| 330 | data ^= 4; |
| 331 | output_set_digit_value(i*10+data, m_segment[i]); |
| 332 | } |
| 333 | } |
| 334 | } |
| 335 | |
| 336 | WRITE8_MEMBER( spinb_state::sndbank_a_w ) |
| 337 | { |
| 338 | m_sndbank_a = data; |
| 339 | m_sound_addr_a = (m_sound_addr_a & 0xffff) | ((data & 7) << 16); |
| 340 | |
| 341 | if (!BIT(data, 6)) |
| 342 | m_sound_addr_a |= (1<<19); |
| 343 | else |
| 344 | if (!BIT(data, 5)) |
| 345 | m_sound_addr_a |= (2<<19); |
| 346 | else |
| 347 | if BIT(data, 7) |
| 348 | m_sndbank_a = 0xff; |
| 349 | } |
| 350 | |
| 351 | WRITE8_MEMBER( spinb_state::sndbank_m_w ) |
| 352 | { |
| 353 | m_sndbank_m = data; |
| 354 | m_sound_addr_m = (m_sound_addr_m & 0xffff) | ((data & 7) << 16); |
| 355 | |
| 356 | if (!BIT(data, 6)) |
| 357 | m_sound_addr_m |= (1<<19); |
| 358 | else |
| 359 | if (!BIT(data, 5)) |
| 360 | m_sound_addr_m |= (2<<19); |
| 361 | else |
| 362 | if BIT(data, 7) |
| 363 | m_sndbank_m = 0xff; |
| 364 | } |
| 365 | |
| 366 | WRITE_LINE_MEMBER( spinb_state::vck_a_w ) |
| 367 | { |
| 368 | m_ic5a->clock_w(0); |
| 369 | m_ic5a->clock_w(1); |
| 370 | |
| 371 | if (m_sndbank_a != 0xff) |
| 372 | { |
| 373 | if (!m_pc0a) |
| 374 | m_msm_a->data_w(m_p_audio[m_sound_addr_a] & 15); |
| 375 | else |
| 376 | m_msm_a->data_w(m_p_audio[m_sound_addr_a] >> 4); |
| 377 | } |
| 378 | else |
| 379 | m_msm_a->data_w(0); |
| 380 | } |
| 381 | |
| 382 | WRITE_LINE_MEMBER( spinb_state::vck_m_w ) |
| 383 | { |
| 384 | m_ic5m->clock_w(0); |
| 385 | m_ic5m->clock_w(1); |
| 386 | |
| 387 | if (m_sndbank_m != 0xff) |
| 388 | { |
| 389 | if (!m_pc0m) |
| 390 | m_msm_m->data_w(m_p_music[m_sound_addr_m] & 15); |
| 391 | else |
| 392 | m_msm_m->data_w(m_p_music[m_sound_addr_m] >> 4); |
| 393 | } |
| 394 | else |
| 395 | m_msm_m->data_w(0); |
| 396 | } |
| 397 | |
| 398 | WRITE_LINE_MEMBER( spinb_state::ic5a_w ) |
| 399 | { |
| 400 | m_pc0a = state; |
| 401 | m_ic5a->d_w(state); |
| 402 | } |
| 403 | |
| 404 | WRITE_LINE_MEMBER( spinb_state::ic5m_w ) |
| 405 | { |
| 406 | m_pc0m = state; |
| 407 | m_ic5m->d_w(state); |
| 408 | } |
| 409 | |
| 410 | READ8_MEMBER( spinb_state::ppia_c_r ) |
| 411 | { |
| 412 | return m_pc0a | m_portc_a; |
| 413 | } |
| 414 | |
| 415 | READ8_MEMBER( spinb_state::ppim_c_r ) |
| 416 | { |
| 417 | return m_pc0m | m_portc_m; |
| 418 | } |
| 419 | |
| 420 | WRITE8_MEMBER( spinb_state::ppia_a_w ) |
| 421 | { |
| 422 | m_sound_addr_a = (m_sound_addr_a & 0xfff00) | data; |
| 423 | } |
| 424 | |
| 425 | WRITE8_MEMBER( spinb_state::ppim_a_w ) |
| 426 | { |
| 427 | m_sound_addr_m = (m_sound_addr_m & 0xfff00) | data; |
| 428 | } |
| 429 | |
| 430 | WRITE8_MEMBER( spinb_state::ppia_b_w ) |
| 431 | { |
| 432 | m_sound_addr_a = (m_sound_addr_a & 0xf00ff) | (data << 8); |
| 433 | } |
| 434 | |
| 435 | WRITE8_MEMBER( spinb_state::ppim_b_w ) |
| 436 | { |
| 437 | m_sound_addr_m = (m_sound_addr_m & 0xf00ff) | (data << 8); |
| 438 | } |
| 439 | |
| 440 | WRITE8_MEMBER( spinb_state::ppia_c_w ) |
| 441 | { |
| 442 | // pc4 - READY line back to cpu board, but not used |
| 443 | if (BIT(data, 5) != BIT(m_portc_a, 5)) |
| 444 | m_msm_a->set_prescaler_selector(m_msm_a, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin |
| 445 | m_msm_a->reset_w(BIT(data, 6)); |
| 446 | m_ic5a->clear_w(!BIT(data, 6)); |
| 447 | m_portc_a = data & 0xfe; |
| 448 | } |
| 449 | |
| 450 | WRITE8_MEMBER( spinb_state::ppim_c_w ) |
| 451 | { |
| 452 | // pc4 - READY line back to cpu board, but not used |
| 453 | if (BIT(data, 5) != BIT(m_portc_m, 5)) |
| 454 | m_msm_m->set_prescaler_selector(m_msm_m, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin |
| 455 | m_msm_m->reset_w(BIT(data, 6)); |
| 456 | m_ic5m->clear_w(!BIT(data, 6)); |
| 457 | m_portc_m = data & 0xfe; |
| 458 | } |
| 459 | |
| 32 | 460 | void spinb_state::machine_reset() |
| 33 | 461 | { |
| 462 | m_sound_addr_a = 0; |
| 463 | m_sound_addr_m = 0; |
| 464 | m_sndbank_a = 0xff; |
| 465 | m_sndbank_m = 0xff; |
| 466 | m_row = 0; |
| 34 | 467 | } |
| 35 | 468 | |
| 36 | | DRIVER_INIT_MEMBER(spinb_state,spinb) |
| 469 | DRIVER_INIT_MEMBER( spinb_state, spinb ) |
| 37 | 470 | { |
| 471 | m_p_audio = memregion("audiorom")->base(); |
| 472 | m_p_music = memregion("musicrom")->base(); |
| 473 | m_game = 0; |
| 38 | 474 | } |
| 39 | 475 | |
| 40 | 476 | static MACHINE_CONFIG_START( spinb, spinb_state ) |
| 41 | 477 | /* basic machine hardware */ |
| 42 | | MCFG_CPU_ADD("maincpu", I8051, 16000000) |
| 478 | MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) |
| 43 | 479 | MCFG_CPU_PROGRAM_MAP(spinb_map) |
| 480 | MCFG_CPU_PERIODIC_INT_DRIVER(spinb_state, irq0_line_hold, 160) // NE556 adjustable (if faster, then jolypark has a stack problem) |
| 481 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz / 2) |
| 482 | MCFG_CPU_PROGRAM_MAP(spinb_audio_map) |
| 483 | MCFG_CPU_ADD("musiccpu", Z80, XTAL_5MHz / 2) |
| 484 | MCFG_CPU_PROGRAM_MAP(spinb_music_map) |
| 485 | MCFG_CPU_ADD("dmdcpu",I8031, XTAL_16MHz) |
| 486 | MCFG_CPU_PROGRAM_MAP(dmd_mem) |
| 487 | MCFG_CPU_IO_MAP(dmd_io) |
| 488 | |
| 489 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 490 | |
| 491 | /* Sound */ |
| 492 | MCFG_FRAGMENT_ADD( genpin_audio ) |
| 493 | MCFG_SPEAKER_STANDARD_MONO("msmavol") |
| 494 | MCFG_SOUND_ADD("msm_a", MSM5205, XTAL_384kHz) |
| 495 | MCFG_MSM5205_VCLK_CB(WRITELINE(spinb_state, vck_a_w)) |
| 496 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ |
| 497 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmavol", 1.0) |
| 498 | MCFG_SPEAKER_STANDARD_MONO("msmmvol") |
| 499 | MCFG_SOUND_ADD("msm_m", MSM5205, XTAL_384kHz) |
| 500 | MCFG_MSM5205_VCLK_CB(WRITELINE(spinb_state, vck_m_w)) |
| 501 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ |
| 502 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmmvol", 1.0) |
| 503 | |
| 504 | /* Devices */ |
| 505 | MCFG_DEVICE_ADD("ppi60", I8255A, 0 ) |
| 506 | //MCFG_I8255_IN_PORTA_CB(READ8(spinb_state, ppi60a_r)) |
| 507 | MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppi60a_w)) |
| 508 | //MCFG_I8255_IN_PORTB_CB(READ8(spinb_state, ppi60b_r)) |
| 509 | MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppi60b_w)) |
| 510 | MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, sw_r)) |
| 511 | //MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppi60c_w)) |
| 512 | |
| 513 | MCFG_DEVICE_ADD("ppi64", I8255A, 0 ) |
| 514 | //MCFG_I8255_IN_PORTA_CB(READ8(spinb_state, ppi64a_r)) |
| 515 | //MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppi64a_w)) |
| 516 | //MCFG_I8255_IN_PORTB_CB(READ8(spinb_state, ppi64b_r)) |
| 517 | //MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppi64b_w)) |
| 518 | //MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, ppi64c_r)) |
| 519 | MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppi64c_w)) |
| 520 | |
| 521 | MCFG_DEVICE_ADD("ppi68", I8255A, 0 ) |
| 522 | //MCFG_I8255_IN_PORTA_CB(READ8(spinb_state, ppi68a_r)) |
| 523 | //MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppi68a_w)) |
| 524 | //MCFG_I8255_IN_PORTB_CB(READ8(spinb_state, ppi68b_r)) |
| 525 | //MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppi68b_w)) |
| 526 | //MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, ppi68c_r)) |
| 527 | //MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppi68c_w)) |
| 528 | |
| 529 | MCFG_DEVICE_ADD("ppi6c", I8255A, 0 ) |
| 530 | //MCFG_I8255_IN_PORTA_CB(READ8(spinb_state, ppi6ca_r)) |
| 531 | //MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppi6ca_w)) |
| 532 | //MCFG_I8255_IN_PORTB_CB(READ8(spinb_state, ppi6cb_r)) |
| 533 | //MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppi6cb_w)) |
| 534 | //MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, ppi6cc_r)) |
| 535 | //MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppi6cc_w)) |
| 536 | |
| 537 | MCFG_DEVICE_ADD("ppia", I8255A, 0 ) |
| 538 | MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppia_a_w)) |
| 539 | MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppia_b_w)) |
| 540 | MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, ppia_c_r)) |
| 541 | MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppia_c_w)) |
| 542 | |
| 543 | MCFG_DEVICE_ADD("ppim", I8255A, 0 ) |
| 544 | MCFG_I8255_OUT_PORTA_CB(WRITE8(spinb_state, ppim_a_w)) |
| 545 | MCFG_I8255_OUT_PORTB_CB(WRITE8(spinb_state, ppim_b_w)) |
| 546 | MCFG_I8255_IN_PORTC_CB(READ8(spinb_state, ppim_c_r)) |
| 547 | MCFG_I8255_OUT_PORTC_CB(WRITE8(spinb_state, ppim_c_w)) |
| 548 | |
| 549 | MCFG_DEVICE_ADD("ic5a", TTL7474, 0) |
| 550 | MCFG_7474_COMP_OUTPUT_CB(WRITELINE(spinb_state, ic5a_w)) |
| 551 | |
| 552 | MCFG_DEVICE_ADD("ic5m", TTL7474, 0) |
| 553 | MCFG_7474_COMP_OUTPUT_CB(WRITELINE(spinb_state, ic5m_w)) |
| 44 | 554 | MACHINE_CONFIG_END |
| 45 | 555 | |
| 556 | #if 0 |
| 557 | static MACHINE_CONFIG_START( spinb, spinb_state ) |
| 558 | /* basic machine hardware */ |
| 559 | MCFG_CPU_ADD("maincpu", I8031, XTAL_16MHz) |
| 560 | MCFG_CPU_PROGRAM_MAP(spinb_map) |
| 561 | MACHINE_CONFIG_END |
| 562 | #endif |
| 563 | |
| 46 | 564 | /*------------------------------------------------------------------- |
| 47 | 565 | / Bushido (1993) - ( Last game by Inder - before becoming Spinball - but same hardware) |
| 48 | 566 | /-------------------------------------------------------------------*/ |
| r32165 | r32166 | |
| 50 | 568 | ROM_REGION(0x10000, "maincpu", 0) |
| 51 | 569 | ROM_LOAD("0-z80.bin", 0x0000, 0x2000, CRC(3ea1eb1d) SHA1(cceb6c68e481f36a5646ff4f38d3dfc4275b0c79)) |
| 52 | 570 | ROM_LOAD("1-z80.old", 0x2000, 0x2000, CRC(648da72b) SHA1(1005a13b4746e302d979c8b1da300e943cdcab3d)) |
| 53 | | ROM_REGION(0x32001, "cpu2", 0) |
| 571 | ROM_REGION(0x32001, "dmdcpu", 0) |
| 54 | 572 | ROM_LOAD("g-disply.bin", 0x00000, 0x10000, CRC(9a1df82f) SHA1(4ad6a12ae36ec898b8ac5243da6dec3abcd9dc33)) |
| 55 | | ROM_REGION(0x10000, "cpu3", 0) |
| 56 | | ROM_LOAD("a-sonido.bin", 0x00000, 0x2000, CRC(cf7d5399) SHA1(c79145826cfa6be2487e3add477d9b452c553762)) |
| 57 | | ROM_REGION(0x180000, "user1", 0) |
| 58 | | ROM_LOAD("b-sonido.bin", 0x0000, 0x80000, CRC(cb4fc885) SHA1(569f389fa8f91f886b58f44f701d2752ef01f3fa)) |
| 573 | ROM_REGION(0x10000, "audiocpu", 0) |
| 574 | ROM_LOAD("a-sonido.bin", 0x0000, 0x2000, CRC(cf7d5399) SHA1(c79145826cfa6be2487e3add477d9b452c553762)) |
| 575 | ROM_REGION(0x180000, "audiorom", 0) |
| 576 | ROM_LOAD("b-sonido.bin", 0x00000, 0x80000, CRC(cb4fc885) SHA1(569f389fa8f91f886b58f44f701d2752ef01f3fa)) |
| 59 | 577 | ROM_LOAD("c-sonido.bin", 0x80000, 0x80000, CRC(35a43dd8) SHA1(f2b1994f67f749c65a88c95d970b655990d85b96)) |
| 60 | | ROM_REGION(0x10000, "cpu4", 0) |
| 61 | | ROM_LOAD("d-musica.bin", 0x00000, 0x2000, CRC(2cb9697c) SHA1(d5c66d616ccd5e299832704e494743429dafd569)) |
| 62 | | ROM_REGION(0x180000, "user2", 0) |
| 63 | | ROM_LOAD("e-musica.bin", 0x0000, 0x80000, CRC(1414b921) SHA1(5df9e538ee109df28953ec8f162c60cb8c6e4d96)) |
| 578 | ROM_REGION(0x10000, "musiccpu", 0) |
| 579 | ROM_LOAD("d-musica.bin", 0x0000, 0x2000, CRC(2cb9697c) SHA1(d5c66d616ccd5e299832704e494743429dafd569)) |
| 580 | ROM_REGION(0x180000, "musicrom", 0) |
| 581 | ROM_LOAD("e-musica.bin", 0x00000, 0x80000, CRC(1414b921) SHA1(5df9e538ee109df28953ec8f162c60cb8c6e4d96)) |
| 64 | 582 | ROM_LOAD("f-musica.bin", 0x80000, 0x80000, CRC(80f3a6df) SHA1(e09ad4660e511779c6e55559fa0c2c0b0c6600c8)) |
| 65 | 583 | ROM_END |
| 66 | 584 | |
| r32165 | r32166 | |
| 68 | 586 | ROM_REGION(0x10000, "maincpu", 0) |
| 69 | 587 | ROM_LOAD("0-cpu.bin", 0x0000, 0x2000, CRC(7f7e6642) SHA1(6872397eed7525f384b79cdea13531d273d8cf14)) |
| 70 | 588 | ROM_LOAD("1-cpu.bin", 0x2000, 0x2000, CRC(a538d37f) SHA1(d2878ad0d31b4221b823812485c7faaf666ce185)) |
| 71 | | ROM_REGION(0x32001, "cpu2", 0) |
| 589 | ROM_REGION(0x32001, "dmdcpu", 0) |
| 72 | 590 | ROM_LOAD("g-disply.bin", 0x00000, 0x10000, CRC(9a1df82f) SHA1(4ad6a12ae36ec898b8ac5243da6dec3abcd9dc33)) |
| 73 | | ROM_REGION(0x10000, "cpu3", 0) |
| 74 | | ROM_LOAD("a-sonido.bin", 0x00000, 0x2000, CRC(cf7d5399) SHA1(c79145826cfa6be2487e3add477d9b452c553762)) |
| 75 | | ROM_REGION(0x180000, "user1", 0) |
| 76 | | ROM_LOAD("b-sonido.bin", 0x0000, 0x80000, CRC(cb4fc885) SHA1(569f389fa8f91f886b58f44f701d2752ef01f3fa)) |
| 591 | ROM_REGION(0x10000, "audiocpu", 0) |
| 592 | ROM_LOAD("a-sonido.bin", 0x0000, 0x2000, CRC(cf7d5399) SHA1(c79145826cfa6be2487e3add477d9b452c553762)) |
| 593 | ROM_REGION(0x180000, "audiorom", 0) |
| 594 | ROM_LOAD("b-sonido.bin", 0x00000, 0x80000, CRC(cb4fc885) SHA1(569f389fa8f91f886b58f44f701d2752ef01f3fa)) |
| 77 | 595 | ROM_LOAD("c-sonido.bin", 0x80000, 0x80000, CRC(35a43dd8) SHA1(f2b1994f67f749c65a88c95d970b655990d85b96)) |
| 78 | | ROM_REGION(0x10000, "cpu4", 0) |
| 79 | | ROM_LOAD("d-musica.bin", 0x00000, 0x2000, CRC(2cb9697c) SHA1(d5c66d616ccd5e299832704e494743429dafd569)) |
| 80 | | ROM_REGION(0x180000, "user2", 0) |
| 81 | | ROM_LOAD("e-musica.bin", 0x0000, 0x80000, CRC(1414b921) SHA1(5df9e538ee109df28953ec8f162c60cb8c6e4d96)) |
| 596 | ROM_REGION(0x10000, "musiccpu", 0) |
| 597 | ROM_LOAD("d-musica.bin", 0x0000, 0x2000, CRC(2cb9697c) SHA1(d5c66d616ccd5e299832704e494743429dafd569)) |
| 598 | ROM_REGION(0x180000, "musicrom", 0) |
| 599 | ROM_LOAD("e-musica.bin", 0x00000, 0x80000, CRC(1414b921) SHA1(5df9e538ee109df28953ec8f162c60cb8c6e4d96)) |
| 82 | 600 | ROM_LOAD("f-musica.bin", 0x80000, 0x80000, CRC(80f3a6df) SHA1(e09ad4660e511779c6e55559fa0c2c0b0c6600c8)) |
| 83 | 601 | ROM_END |
| 84 | 602 | |
| r32165 | r32166 | |
| 89 | 607 | ROM_REGION(0x10000, "maincpu", 0) |
| 90 | 608 | ROM_LOAD("jpcpu0.rom", 0x0000, 0x2000, CRC(061967af) SHA1(45048e1d9f17efa3382460fd474a5aeb4191d617)) |
| 91 | 609 | ROM_LOAD("jpcpu1.rom", 0x2000, 0x2000, CRC(ea99202f) SHA1(e04825e73fd25f6469b3315f063f598ea1ab44c7)) |
| 92 | | ROM_REGION(0x32001, "cpu2", 0) |
| 610 | ROM_REGION(0x32001, "dmdcpu", 0) |
| 93 | 611 | ROM_LOAD("jpdmd0.rom", 0x00000, 0x10000, CRC(b57565cb) SHA1(3fef66d298893029de78fdb6ecdb562c33d76180)) |
| 94 | 612 | ROM_LOAD("jpdmd1.rom", 0x12000, 0x20000, CRC(40d1563f) SHA1(90dbea742202340da6fa950eedc2bceec5a2af7e)) |
| 95 | | ROM_REGION(0x10000, "cpu3", 0) |
| 96 | | ROM_LOAD("jpsndc1.rom", 0x00000, 0x2000, CRC(0475318f) SHA1(7154bd5ca5b28019eb0ff598ec99bbe49260932b)) |
| 97 | | ROM_REGION(0x180000, "user1", 0) |
| 98 | | ROM_LOAD("jpsndm4.rom", 0x0000, 0x80000, CRC(735f3db7) SHA1(81dc893f5194d6ac1af54b262555a40c5c3e0292)) |
| 613 | ROM_REGION(0x10000, "audiocpu", 0) |
| 614 | ROM_LOAD("jpsndc1.rom", 0x0000, 0x2000, CRC(0475318f) SHA1(7154bd5ca5b28019eb0ff598ec99bbe49260932b)) |
| 615 | ROM_REGION(0x180000, "audiorom", 0) |
| 616 | ROM_LOAD("jpsndm4.rom", 0x00000, 0x80000, CRC(735f3db7) SHA1(81dc893f5194d6ac1af54b262555a40c5c3e0292)) |
| 99 | 617 | ROM_LOAD("jpsndm5.rom", 0x80000, 0x80000, CRC(769374bd) SHA1(8121369714c55cc06c493b15e5c2ca79b13aff52)) |
| 100 | | ROM_REGION(0x10000, "cpu4", 0) |
| 101 | | ROM_LOAD("jpsndc0.rom", 0x00000, 0x2000, CRC(a97259dc) SHA1(58dea3f36b760112cfc32d306077da8cf6cdec5a)) |
| 102 | | ROM_REGION(0x180000, "user2", 0) |
| 103 | | ROM_LOAD("jpsndm1.rom", 0x0000, 0x80000, CRC(fc91d2f1) SHA1(c838a0b31bbec9dbc96b46d692c8d6f1286fe46a)) |
| 104 | | ROM_LOAD("jpsndm2.rom", 0x80000, 0x80000, CRC(fb2d1882) SHA1(fb0ef9def54d9163a46354a0df0757fac6cbd57c)) |
| 618 | ROM_REGION(0x10000, "musiccpu", 0) |
| 619 | ROM_LOAD("jpsndc0.rom", 0x0000, 0x2000, CRC(a97259dc) SHA1(58dea3f36b760112cfc32d306077da8cf6cdec5a)) |
| 620 | ROM_REGION(0x180000, "musicrom", 0) |
| 621 | ROM_LOAD("jpsndm1.rom", 0x000000, 0x80000, CRC(fc91d2f1) SHA1(c838a0b31bbec9dbc96b46d692c8d6f1286fe46a)) |
| 622 | ROM_LOAD("jpsndm2.rom", 0x080000, 0x80000, CRC(fb2d1882) SHA1(fb0ef9def54d9163a46354a0df0757fac6cbd57c)) |
| 105 | 623 | ROM_LOAD("jpsndm3.rom", 0x100000, 0x80000, CRC(77e515ba) SHA1(17b635d107c437bfc809f8cc1a6cd063cef12691)) |
| 106 | 624 | ROM_END |
| 107 | 625 | |
| r32165 | r32166 | |
| 112 | 630 | ROM_REGION(0x10000, "maincpu", 0) |
| 113 | 631 | ROM_LOAD("m2cpu0.19", 0x0000, 0x2000, CRC(274c8040) SHA1(6b039b79b7e08f2bf2045bc4f1cbba790c999fed)) |
| 114 | 632 | ROM_LOAD("m2cpu1.19", 0x2000, 0x2000, CRC(c445df0b) SHA1(1f346c1df8df0a3c4e8cb1186280d2f34959b3f8)) |
| 115 | | ROM_REGION(0x32001, "cpu2", 0) |
| 633 | ROM_REGION(0x32001, "dmdcpu", 0) |
| 116 | 634 | ROM_LOAD("m2dmdf.01", 0x00000, 0x10000, CRC(c45ccc74) SHA1(8362e799a76536a16dd2d5dde500ad3db273180f)) |
| 117 | | ROM_REGION(0x10000, "cpu3", 0) |
| 118 | | ROM_LOAD("m2sndd.01", 0x00000, 0x2000, CRC(e789f22d) SHA1(36aa7eac1dd37a02c982d109462dddbd85a305cc)) |
| 119 | | ROM_REGION(0x180000, "user1", 0) |
| 120 | | ROM_LOAD("m2snde.01", 0x0000, 0x80000, CRC(f5721119) SHA1(9082198e8d875b67323266c4bf8c2c378b63dfbb)) |
| 121 | | ROM_REGION(0x10000, "cpu4", 0) |
| 122 | | ROM_LOAD("m2musa.01", 0x00000, 0x2000, CRC(2d92a882) SHA1(cead22e434445e5c25414646b1e9ae2b9457439d)) |
| 123 | | ROM_REGION(0x180000, "user2", 0) |
| 124 | | ROM_LOAD("m2musb.01", 0x0000, 0x80000, CRC(6689cd19) SHA1(430092d51704dfda8bd8264875f1c1f4461c56e5)) |
| 635 | ROM_REGION(0x10000, "audiocpu", 0) |
| 636 | ROM_LOAD("m2sndd.01", 0x0000, 0x2000, CRC(e789f22d) SHA1(36aa7eac1dd37a02c982d109462dddbd85a305cc)) |
| 637 | ROM_REGION(0x180000, "audiorom", 0) |
| 638 | ROM_LOAD("m2snde.01", 0x00000, 0x80000, CRC(f5721119) SHA1(9082198e8d875b67323266c4bf8c2c378b63dfbb)) |
| 639 | ROM_REGION(0x10000, "musiccpu", 0) |
| 640 | ROM_LOAD("m2musa.01", 0x0000, 0x2000, CRC(2d92a882) SHA1(cead22e434445e5c25414646b1e9ae2b9457439d)) |
| 641 | ROM_REGION(0x180000, "musicrom", 0) |
| 642 | ROM_LOAD("m2musb.01", 0x00000, 0x80000, CRC(6689cd19) SHA1(430092d51704dfda8bd8264875f1c1f4461c56e5)) |
| 125 | 643 | ROM_LOAD("m2musc.01", 0x80000, 0x80000, CRC(88851b82) SHA1(d0c9fa391ca213a69b7c8ae7ca52063503b5656e)) |
| 126 | 644 | ROM_END |
| 127 | 645 | |
| r32165 | r32166 | |
| 132 | 650 | ROM_REGION(0x10000, "maincpu", 0) |
| 133 | 651 | ROM_LOAD("vwcpu0.rom", 0x0000, 0x4000, CRC(89c980e7) SHA1(09eeed0232255875cf119d59143d839ff40e30dd)) |
| 134 | 652 | ROM_LOAD("vwcpu1.rom", 0x4000, 0x4000, CRC(a4db4e64) SHA1(fc55781295fc723741de24ad60311b7e33551830)) |
| 135 | | ROM_REGION(0x114000, "cpu2", 0) |
| 653 | ROM_REGION(0x114000, "dmdcpu", 0) |
| 136 | 654 | ROM_LOAD("vwdmd0.rom", 0x00000, 0x10000, CRC(40600060) SHA1(7ad619bcb5e5e50325360f4e946b5bfa072caead)) |
| 137 | 655 | ROM_LOAD("vwdmd1.rom", 0x14000, 0x80000, CRC(de4a1060) SHA1(6b848dfd8aafdbcf7e1593f98bd1c3d69306aa11)) |
| 138 | 656 | ROM_LOAD("vwdmd2.rom", 0x94000, 0x80000, CRC(29fc8da7) SHA1(2704f14a3338a63abda3bcbc56e9f984a679eb38)) |
| 139 | | ROM_REGION(0x10000, "cpu3", 0) |
| 140 | | ROM_LOAD("vws2ic9.rom", 0x00000, 0x2000, CRC(ab8cb4c5) SHA1(92a702c11e2cef703992244529ba86079d5ab9b0)) |
| 141 | | ROM_REGION(0x180000, "user1", 0) |
| 142 | | ROM_LOAD("vws3ic15.rom", 0x0000, 0x80000, CRC(d62c9443) SHA1(7c6b8662d88ba6592da8b83af11087647105e8dd)) |
| 143 | | ROM_REGION(0x10000, "cpu4", 0) |
| 144 | | ROM_LOAD("vws4ic30.rom", 0x00000, 0x2000, CRC(ecd18a19) SHA1(558e687e0429d31fafe8db05954d9a8ad90d6aeb)) |
| 145 | | ROM_REGION(0x180000, "user2", 0) |
| 146 | | ROM_LOAD("vws5ic25.rom", 0x0000, 0x80000, CRC(56d349f0) SHA1(e71d2d03c3e978c552e272de8850cc265255fbd1)) |
| 147 | | ROM_LOAD("vws6ic26.rom", 0x80000, 0x80000, CRC(bee399c1) SHA1(b2c6e4830641ed32b9643dc8c1fa08a2da5a7e9b)) |
| 657 | ROM_REGION(0x10000, "audiocpu", 0) |
| 658 | ROM_LOAD("vws2ic9.rom", 0x0000, 0x2000, CRC(ab8cb4c5) SHA1(92a702c11e2cef703992244529ba86079d5ab9b0)) |
| 659 | ROM_REGION(0x180000, "audiorom", 0) |
| 660 | ROM_LOAD("vws3ic15.rom", 0x00000, 0x80000, CRC(d62c9443) SHA1(7c6b8662d88ba6592da8b83af11087647105e8dd)) |
| 661 | ROM_REGION(0x10000, "musiccpu", 0) |
| 662 | ROM_LOAD("vws4ic30.rom", 0x0000, 0x2000, CRC(ecd18a19) SHA1(558e687e0429d31fafe8db05954d9a8ad90d6aeb)) |
| 663 | ROM_REGION(0x180000, "musicrom", 0) |
| 664 | ROM_LOAD("vws5ic25.rom", 0x000000, 0x80000, CRC(56d349f0) SHA1(e71d2d03c3e978c552e272de8850cc265255fbd1)) |
| 665 | ROM_LOAD("vws6ic26.rom", 0x080000, 0x80000, CRC(bee399c1) SHA1(b2c6e4830641ed32b9643dc8c1fa08a2da5a7e9b)) |
| 148 | 666 | ROM_LOAD("vws7ic27.rom", 0x100000, 0x80000, CRC(7335b29c) SHA1(4de6de09f069feecbad2e5ef50032e8d381ff9b1)) |
| 149 | 667 | ROM_END |
| 150 | 668 | |
| 151 | | GAME(1993, bushido, 0, spinb, spinb, spinb_state, spinb, ROT0, "Inder/Spinball", "Bushido (set 1)", GAME_IS_SKELETON_MECHANICAL) |
| 152 | | GAME(1993, bushidoa, bushido, spinb, spinb, spinb_state, spinb, ROT0, "Inder/Spinball", "Bushido (set 2)", GAME_IS_SKELETON_MECHANICAL) |
| 153 | | GAME(1996, jolypark, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Jolly Park", GAME_IS_SKELETON_MECHANICAL) |
| 154 | | GAME(1995, mach2, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Mach 2", GAME_IS_SKELETON_MECHANICAL) |
| 155 | | GAME(1996, vrnwrld, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Verne's World", GAME_IS_SKELETON_MECHANICAL) |
| 669 | GAME(1993, bushido, 0, spinb, spinb, spinb_state, spinb, ROT0, "Inder/Spinball", "Bushido (set 1)", GAME_IS_SKELETON_MECHANICAL) |
| 670 | GAME(1993, bushidoa, bushido, spinb, spinb, spinb_state, spinb, ROT0, "Inder/Spinball", "Bushido (set 2)", GAME_IS_SKELETON_MECHANICAL) |
| 671 | GAME(1996, jolypark, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Jolly Park", GAME_IS_SKELETON_MECHANICAL) |
| 672 | GAME(1995, mach2, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Mach 2", GAME_IS_SKELETON_MECHANICAL) |
| 673 | GAME(1996, vrnwrld, 0, spinb, spinb, spinb_state, spinb, ROT0, "Spinball", "Verne's World", GAME_IS_SKELETON_MECHANICAL) |