trunk/src/mame/video/decodmd1.c
| r0 | r24013 | |
| 1 | /* |
| 2 | * Data East Pinball Dot Matrix Display |
| 3 | * |
| 4 | * Type 1: 128x16 |
| 5 | * Z80 @ 4MHz |
| 6 | */ |
| 7 | |
| 8 | #include "decodmd1.h" |
| 9 | #include "rendlay.h" |
| 10 | |
| 11 | const device_type DECODMD1 = &device_creator<decodmd_type1_device>; |
| 12 | |
| 13 | READ8_MEMBER( decodmd_type1_device::latch_r ) |
| 14 | { |
| 15 | return 0; |
| 16 | } |
| 17 | |
| 18 | WRITE8_MEMBER( decodmd_type1_device::data_w ) |
| 19 | { |
| 20 | m_latch = data; |
| 21 | } |
| 22 | |
| 23 | READ8_MEMBER( decodmd_type1_device::busy_r ) |
| 24 | { |
| 25 | return m_status; |
| 26 | } |
| 27 | |
| 28 | |
| 29 | WRITE8_MEMBER( decodmd_type1_device::ctrl_w ) |
| 30 | { |
| 31 | if(!(m_ctrl & 0x01) && (data & 0x01)) |
| 32 | { |
| 33 | m_command = m_latch; |
| 34 | m_busy = 1; |
| 35 | m_cpu->set_input_line(INPUT_LINE_IRQ0,ASSERT_LINE); |
| 36 | } |
| 37 | if((m_ctrl & 0x02) && !(data & 0x02)) |
| 38 | { |
| 39 | m_rombank1->set_entry(0); |
| 40 | m_bank = 0; |
| 41 | m_busy = 0; |
| 42 | m_rowselect = 0; |
| 43 | m_blank = 0; |
| 44 | m_frameswap = false; |
| 45 | m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); |
| 46 | } |
| 47 | m_ctrl = data; |
| 48 | } |
| 49 | |
| 50 | READ8_MEMBER( decodmd_type1_device::ctrl_r ) |
| 51 | { |
| 52 | return m_ctrl; |
| 53 | } |
| 54 | |
| 55 | READ8_MEMBER( decodmd_type1_device::status_r ) |
| 56 | { |
| 57 | return (m_busy & 0x01) | ((m_ctrl) << 1); |
| 58 | } |
| 59 | |
| 60 | WRITE8_MEMBER( decodmd_type1_device::status_w ) |
| 61 | { |
| 62 | m_status = data; |
| 63 | } |
| 64 | |
| 65 | // Z80 I/O ports not fully decoded. |
| 66 | // if bit 7 = 0, then when bit 2 is 0 selects COCLK, and when bit 2 is 1 selects CLATCH |
| 67 | READ8_MEMBER( decodmd_type1_device::dmd_port_r ) |
| 68 | { |
| 69 | if((offset & 0x84) == 0x80) |
| 70 | { |
| 71 | // IDAT (read only) |
| 72 | m_busy = 0; |
| 73 | m_ctrl &= ~0x01; |
| 74 | m_cpu->set_input_line(INPUT_LINE_IRQ0,CLEAR_LINE); |
| 75 | return m_latch; |
| 76 | } |
| 77 | return 0xff; |
| 78 | } |
| 79 | |
| 80 | WRITE8_MEMBER( decodmd_type1_device::dmd_port_w ) |
| 81 | { |
| 82 | UINT8 bit; |
| 83 | |
| 84 | switch(offset & 0x84) |
| 85 | { |
| 86 | case 0x00: // COCLK |
| 87 | bit = (data >> ((offset & 0x03)*2)); // selects pair of bits depending on port used (0x00-0x03) |
| 88 | m_pxdata1 = (m_pxdata1 >> 1) | ((bit & 0x01) ? 0x80000000 : 0x00000000); |
| 89 | m_pxdata2 = (m_pxdata2 >> 1) | ((bit & 0x02) ? 0x80000000 : 0x00000000); |
| 90 | break; |
| 91 | case 0x04: // CLATCH |
| 92 | m_pxdata1_latched = m_pxdata1; |
| 93 | m_pxdata2_latched = m_pxdata2; |
| 94 | if(m_blank) |
| 95 | output_data(); |
| 96 | break; |
| 97 | case 0x80: // IDAT (ignored) |
| 98 | break; |
| 99 | case 0x84: |
| 100 | bit = data & 0x01; |
| 101 | switch(offset & 0xdc) |
| 102 | { |
| 103 | case 0x84: // Bank bit 0 |
| 104 | m_bank = (m_bank & ~0x01) | (~bit & 0x01); |
| 105 | m_rombank1->set_entry(m_bank); |
| 106 | break; |
| 107 | case 0x8c: // Bank bit 1 |
| 108 | m_bank = (m_bank & ~0x02) | ((~bit & 0x01) << 1); |
| 109 | m_rombank1->set_entry(m_bank); |
| 110 | break; |
| 111 | case 0x94: // Bank bit 2 |
| 112 | m_bank = (m_bank & ~0x04) | ((~bit & 0x01) << 2); |
| 113 | m_rombank1->set_entry(m_bank); |
| 114 | break; |
| 115 | case 0x9c: // Blanking |
| 116 | m_blank = bit; |
| 117 | if(bit) |
| 118 | output_data(); |
| 119 | break; |
| 120 | case 0xc4: // Status |
| 121 | m_status = bit; |
| 122 | break; |
| 123 | case 0xcc: // Row data |
| 124 | m_rowdata = bit; |
| 125 | break; |
| 126 | case 0xd4: // Row clock |
| 127 | if(~bit & m_rowclock) // on negative edge |
| 128 | m_rowselect = (m_rowselect << 1) | m_rowdata; |
| 129 | m_rowclock = bit; |
| 130 | break; |
| 131 | case 0xdc: // Test |
| 132 | m_busy_set = bit; |
| 133 | //check_busy(); |
| 134 | break; |
| 135 | } |
| 136 | break; |
| 137 | } |
| 138 | } |
| 139 | |
| 140 | void decodmd_type1_device::output_data() |
| 141 | { |
| 142 | UINT8 ptr = 0; |
| 143 | UINT32 row = m_rowselect; |
| 144 | |
| 145 | if(row == 0) |
| 146 | m_frameswap = !m_frameswap; |
| 147 | |
| 148 | if(!m_frameswap) |
| 149 | ptr = 0x80; |
| 150 | |
| 151 | while(row != 0) |
| 152 | { |
| 153 | if(row & 0x01) |
| 154 | { |
| 155 | m_pixels[ptr] = m_pxdata2_latched; |
| 156 | m_pixels[ptr+1] = m_pxdata1_latched; |
| 157 | } |
| 158 | ptr += 2; |
| 159 | row >>= 1; |
| 160 | } |
| 161 | } |
| 162 | |
| 163 | void decodmd_type1_device::check_busy() |
| 164 | { |
| 165 | if(m_busy_clr) |
| 166 | { |
| 167 | m_busy = 0; |
| 168 | m_cpu->set_input_line(INPUT_LINE_IRQ0,CLEAR_LINE); |
| 169 | } |
| 170 | else if(!m_busy_set) |
| 171 | { |
| 172 | m_busy = 1; |
| 173 | m_cpu->set_input_line(INPUT_LINE_IRQ0,ASSERT_LINE); |
| 174 | } |
| 175 | else |
| 176 | { |
| 177 | if(!m_busy_clk) |
| 178 | { |
| 179 | m_busy = 1; |
| 180 | m_cpu->set_input_line(INPUT_LINE_IRQ0,ASSERT_LINE); |
| 181 | } |
| 182 | } |
| 183 | |
| 184 | } |
| 185 | |
| 186 | TIMER_DEVICE_CALLBACK_MEMBER(decodmd_type1_device::dmd_nmi) |
| 187 | { |
| 188 | m_cpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 189 | } |
| 190 | |
| 191 | static ADDRESS_MAP_START( decodmd1_map, AS_PROGRAM, 8, decodmd_type1_device ) |
| 192 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("dmdbank2") // last 16k of ROM |
| 193 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("dmdbank1") //AM_WRITE(status_w) |
| 194 | AM_RANGE(0x8000, 0x9fff) AM_RAMBANK("dmdram") |
| 195 | ADDRESS_MAP_END |
| 196 | |
| 197 | static ADDRESS_MAP_START( decodmd1_io_map, AS_IO, 8, decodmd_type1_device ) |
| 198 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 199 | AM_RANGE(0x00, 0xff) AM_READWRITE(dmd_port_r, dmd_port_w) |
| 200 | ADDRESS_MAP_END |
| 201 | |
| 202 | static MACHINE_CONFIG_FRAGMENT( decodmd1 ) |
| 203 | /* basic machine hardware */ |
| 204 | MCFG_CPU_ADD("dmdcpu", Z80, XTAL_4MHz) |
| 205 | MCFG_CPU_PROGRAM_MAP(decodmd1_map) |
| 206 | MCFG_CPU_IO_MAP(decodmd1_io_map) |
| 207 | |
| 208 | MCFG_QUANTUM_TIME(attotime::from_hz(60)) |
| 209 | |
| 210 | MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer",decodmd_type1_device,dmd_nmi,attotime::from_hz(2000)) // seems a lot |
| 211 | |
| 212 | MCFG_DEFAULT_LAYOUT(layout_lcd) |
| 213 | |
| 214 | MCFG_SCREEN_ADD("dmd",LCD) |
| 215 | MCFG_SCREEN_SIZE(128, 16) |
| 216 | MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 16-1) |
| 217 | MCFG_SCREEN_UPDATE_DRIVER(decodmd_type1_device,screen_update) |
| 218 | MCFG_SCREEN_REFRESH_RATE(60) |
| 219 | |
| 220 | MCFG_RAM_ADD(RAM_TAG) |
| 221 | MCFG_RAM_DEFAULT_SIZE("8K") |
| 222 | |
| 223 | MACHINE_CONFIG_END |
| 224 | |
| 225 | machine_config_constructor decodmd_type1_device::device_mconfig_additions() const |
| 226 | { |
| 227 | return MACHINE_CONFIG_NAME( decodmd1 ); |
| 228 | } |
| 229 | |
| 230 | decodmd_type1_device::decodmd_type1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 231 | : device_t(mconfig, DECODMD1, "Data East Pinball Dot Matrix Display Type 1", tag, owner, clock, "decodmd1", __FILE__), |
| 232 | m_cpu(*this,"dmdcpu"), |
| 233 | m_rombank1(*this,"dmdbank1"), |
| 234 | m_rombank2(*this,"dmdbank2"), |
| 235 | m_ram(*this,RAM_TAG) |
| 236 | {} |
| 237 | |
| 238 | void decodmd_type1_device::device_start() |
| 239 | { |
| 240 | save_pointer(m_pixels,"DMD Video data",0x100); |
| 241 | } |
| 242 | |
| 243 | void decodmd_type1_device::device_reset() |
| 244 | { |
| 245 | UINT8* ROM; |
| 246 | UINT8* RAM = m_ram->pointer(); |
| 247 | m_rom = memregion(m_romregion); |
| 248 | |
| 249 | memset(RAM,0,0x2000); |
| 250 | |
| 251 | ROM = m_rom->base(); |
| 252 | m_rombank1->configure_entries(0, 8, &ROM[0x0000], 0x4000); |
| 253 | m_rombank2->configure_entry(0, &ROM[0x1c000]); |
| 254 | m_rombank1->set_entry(0); |
| 255 | m_rombank2->set_entry(0); |
| 256 | m_bank = 0; |
| 257 | m_busy = 0; |
| 258 | m_rowselect = 0; |
| 259 | m_blank = 0; |
| 260 | m_frameswap = false; |
| 261 | } |
| 262 | |
| 263 | void decodmd_type1_device::device_config_complete() |
| 264 | { |
| 265 | // inherit a copy of the static data |
| 266 | const decodmd_type1_intf *intf = reinterpret_cast<const decodmd_type1_intf *>(static_config()); |
| 267 | if (intf != NULL) |
| 268 | *static_cast<decodmd_type1_intf *>(this) = *intf; |
| 269 | |
| 270 | // or initialize to defaults if none provided |
| 271 | else |
| 272 | { |
| 273 | m_romregion = NULL; |
| 274 | } |
| 275 | } |
| 276 | |
| 277 | UINT32 decodmd_type1_device::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ) |
| 278 | { |
| 279 | UINT8 ptr = 0; |
| 280 | UINT8 x,y,dot; |
| 281 | UINT32 data1,data2; |
| 282 | |
| 283 | if(m_frameswap) |
| 284 | ptr = 0x80; |
| 285 | |
| 286 | for(y=0;y<16;y++) // scanline |
| 287 | { |
| 288 | for(x=0;x<128;x+=64) |
| 289 | { |
| 290 | data1 = m_pixels[ptr]; |
| 291 | data2 = m_pixels[ptr+1]; |
| 292 | for(dot=0;dot<64;dot+=2) |
| 293 | { |
| 294 | bitmap.pix32(y,x+dot) = (data1 & 0x01) ? MAKE_RGB(0xff,0xaa,0x00) : RGB_BLACK; |
| 295 | bitmap.pix32(y,x+dot+1) = (data2 & 0x01) ? MAKE_RGB(0xff,0xaa,0x00) : RGB_BLACK; |
| 296 | data1 >>= 1; |
| 297 | data2 >>= 1; |
| 298 | } |
| 299 | ptr+=2; |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | return 0; |
| 304 | } |
trunk/src/mame/drivers/de_3.c
| r24012 | r24013 | |
| 8 | 8 | #include "cpu/m6809/m6809.h" |
| 9 | 9 | #include "machine/6821pia.h" |
| 10 | 10 | #include "audio/decobsmt.h" |
| 11 | #include "video/decodmd1.h" |
| 11 | 12 | #include "video/decodmd2.h" |
| 12 | 13 | #include "machine/genpin.h" |
| 13 | 14 | #include "machine/nvram.h" |
| r24012 | r24013 | |
| 38 | 39 | m_pia2c(*this, "pia2c"), |
| 39 | 40 | m_pia30(*this, "pia30"), |
| 40 | 41 | m_pia34(*this, "pia34"), |
| 41 | | m_dmdtype2(*this, "decodmd"), |
| 42 | m_dmdtype1(*this, "decodmd1"), |
| 43 | m_dmdtype2(*this, "decodmd2"), |
| 42 | 44 | m_decobsmt(*this, "decobsmt") |
| 43 | 45 | { } |
| 44 | 46 | |
| r24012 | r24013 | |
| 50 | 52 | required_device<pia6821_device> m_pia2c; |
| 51 | 53 | required_device<pia6821_device> m_pia30; |
| 52 | 54 | required_device<pia6821_device> m_pia34; |
| 55 | optional_device<decodmd_type1_device> m_dmdtype1; |
| 53 | 56 | optional_device<decodmd_type2_device> m_dmdtype2; |
| 54 | 57 | |
| 55 | 58 | // driver_device overrides |
| r24012 | r24013 | |
| 288 | 291 | WRITE8_MEMBER( de_3_state::sound_w ) |
| 289 | 292 | { |
| 290 | 293 | m_sound_data = data; |
| 291 | | m_decobsmt->bsmt_comms_w(space,offset,m_sound_data); |
| 294 | if(m_sound_data != 0xfe) |
| 295 | m_decobsmt->bsmt_comms_w(space,offset,m_sound_data); |
| 292 | 296 | } |
| 293 | 297 | |
| 294 | 298 | WRITE_LINE_MEMBER( de_3_state::pia21_ca2_w ) |
| r24012 | r24013 | |
| 383 | 387 | m_dmdtype2->data_w(space,offset,data); |
| 384 | 388 | logerror("DMD: Data write %02x\n", data); |
| 385 | 389 | } |
| 390 | else if(m_dmdtype1) |
| 391 | { |
| 392 | m_dmdtype1->data_w(space,offset,data); |
| 393 | logerror("DMD: Data write %02x\n", data); |
| 394 | } |
| 386 | 395 | // m_segment1 |= (data<<8); |
| 387 | 396 | // m_segment1 |= 0x10000; |
| 388 | 397 | // if ((m_segment1 & 0x70000) == 0x30000) |
| r24012 | r24013 | |
| 396 | 405 | { |
| 397 | 406 | if(m_dmdtype2) |
| 398 | 407 | return m_dmdtype2->busy_r(space,offset); |
| 399 | | return 0xff; |
| 408 | return 0; |
| 400 | 409 | } |
| 401 | 410 | |
| 402 | 411 | WRITE8_MEMBER( de_3_state::pia2c_pb_w ) |
| r24012 | r24013 | |
| 407 | 416 | m_dmdtype2->ctrl_w(space,offset,data); |
| 408 | 417 | logerror("DMD: Control write %02x\n", data); |
| 409 | 418 | } |
| 419 | else if(m_dmdtype1) |
| 420 | { |
| 421 | m_dmdtype1->ctrl_w(space,offset,data); |
| 422 | logerror("DMD: Control write %02x\n", data); |
| 423 | } |
| 410 | 424 | |
| 411 | 425 | // m_segment1 |= data; |
| 412 | 426 | // m_segment1 |= 0x20000; |
| r24012 | r24013 | |
| 481 | 495 | { |
| 482 | 496 | return m_dmdtype2->status_r(space,offset); |
| 483 | 497 | } |
| 498 | else if(m_dmdtype1) |
| 499 | { |
| 500 | return m_dmdtype1->status_r(space,offset); |
| 501 | } |
| 484 | 502 | return 0; |
| 485 | 503 | } |
| 486 | 504 | |
| r24012 | r24013 | |
| 500 | 518 | DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ |
| 501 | 519 | }; |
| 502 | 520 | |
| 503 | | static const decodmd_intf decodmd_interface = |
| 521 | static const decodmd_type1_intf decodmd1_interface = |
| 504 | 522 | { |
| 505 | 523 | ":gfx3" // region containing DMD ROM data |
| 506 | 524 | }; |
| 507 | 525 | |
| 526 | static const decodmd_type2_intf decodmd2_interface = |
| 527 | { |
| 528 | ":gfx3" // region containing DMD ROM data |
| 529 | }; |
| 530 | |
| 508 | 531 | void de_3_state::machine_reset() |
| 509 | 532 | { |
| 510 | 533 | } |
| r24012 | r24013 | |
| 545 | 568 | MACHINE_CONFIG_END |
| 546 | 569 | |
| 547 | 570 | static MACHINE_CONFIG_DERIVED( de_3_dmd2, de_3 ) |
| 548 | | MCFG_DECODMD_TYPE2_ADD("decodmd",decodmd_interface) |
| 571 | MCFG_DECODMD_TYPE2_ADD("decodmd2",decodmd2_interface) |
| 549 | 572 | MACHINE_CONFIG_END |
| 550 | 573 | |
| 574 | static MACHINE_CONFIG_DERIVED( de_3_dmd1, de_3 ) |
| 575 | MCFG_DECODMD_TYPE1_ADD("decodmd1",decodmd1_interface) |
| 576 | MACHINE_CONFIG_END |
| 577 | |
| 551 | 578 | /*------------------------------------------------------------- |
| 552 | 579 | / Adventures of Rocky and Bullwinkle and Friends - CPU Rev 3b /DMD Type 2 512K Rom - 64K CPU Rom |
| 553 | 580 | /------------------------------------------------------------*/ |
| r24012 | r24013 | |
| 1219 | 1246 | GAME(1993, rab_130, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.30)", GAME_IS_SKELETON_MECHANICAL) |
| 1220 | 1247 | GAME(1993, rab_103, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", GAME_IS_SKELETON_MECHANICAL) |
| 1221 | 1248 | GAME(1992, aar_101, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Aaron Spelling (1.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1222 | | GAME(1991, btmn_103, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03)", GAME_IS_SKELETON_MECHANICAL) |
| 1223 | | GAME(1991, btmn_101, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1224 | | GAME(1991, btmn_g13, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03 Germany)", GAME_IS_SKELETON_MECHANICAL) |
| 1225 | | GAME(1991, btmn_106, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.06)", GAME_IS_SKELETON_MECHANICAL) |
| 1226 | | GAME(1991, ckpt_a17, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Checkpoint (1.7)", GAME_IS_SKELETON_MECHANICAL) |
| 1249 | GAME(1991, btmn_103, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03)", GAME_IS_SKELETON_MECHANICAL) |
| 1250 | GAME(1991, btmn_101, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1251 | GAME(1991, btmn_g13, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03 Germany)", GAME_IS_SKELETON_MECHANICAL) |
| 1252 | GAME(1991, btmn_106, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.06)", GAME_IS_SKELETON_MECHANICAL) |
| 1253 | GAME(1991, ckpt_a17, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Checkpoint (1.7)", GAME_IS_SKELETON_MECHANICAL) |
| 1227 | 1254 | GAME(1994, gnr_300, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Guns N Roses (3.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1228 | | GAME(1992, hook_408, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.08)", GAME_IS_SKELETON_MECHANICAL) |
| 1229 | | GAME(1992, hook_401, hook_408, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1230 | | GAME(1992, hook_404, hook_408, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.04)", GAME_IS_SKELETON_MECHANICAL) |
| 1255 | GAME(1992, hook_408, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.08)", GAME_IS_SKELETON_MECHANICAL) |
| 1256 | GAME(1992, hook_401, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1257 | GAME(1992, hook_404, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.04)", GAME_IS_SKELETON_MECHANICAL) |
| 1231 | 1258 | GAME(1993, jupk_513, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.13)", GAME_IS_SKELETON_MECHANICAL) |
| 1232 | 1259 | GAME(1993, jupk_501, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1233 | 1260 | GAME(1993, jupk_g51, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01 Germany)", GAME_IS_SKELETON_MECHANICAL) |
| r24012 | r24013 | |
| 1239 | 1266 | GAME(1992, lw3_207, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.07 Canada)", GAME_IS_SKELETON_MECHANICAL) |
| 1240 | 1267 | GAME(1992, lw3_205, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.05)", GAME_IS_SKELETON_MECHANICAL) |
| 1241 | 1268 | GAME(1992, lw3_200, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1242 | | GAME(1992, trek_201, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1243 | | GAME(1992, trek_200, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1244 | | GAME(1992, trek_120, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.20)", GAME_IS_SKELETON_MECHANICAL) |
| 1245 | | GAME(1992, trek_110, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10)", GAME_IS_SKELETON_MECHANICAL) |
| 1246 | | GAME(1992, trek_11a, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", GAME_IS_SKELETON_MECHANICAL) |
| 1269 | GAME(1992, trek_201, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.01)", GAME_IS_SKELETON_MECHANICAL) |
| 1270 | GAME(1992, trek_200, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1271 | GAME(1992, trek_120, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.20)", GAME_IS_SKELETON_MECHANICAL) |
| 1272 | GAME(1992, trek_110, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10)", GAME_IS_SKELETON_MECHANICAL) |
| 1273 | GAME(1992, trek_11a, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", GAME_IS_SKELETON_MECHANICAL) |
| 1247 | 1274 | GAME(1992, stwr_103, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.03)", GAME_IS_SKELETON_MECHANICAL) |
| 1248 | 1275 | GAME(1992, stwr_g11, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.01 Germany)", GAME_IS_SKELETON_MECHANICAL) |
| 1249 | 1276 | GAME(1992, stwr_a14, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL) |
| r24012 | r24013 | |
| 1254 | 1281 | GAME(1993, tftc_300, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1255 | 1282 | GAME(1993, tftc_200, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1256 | 1283 | GAME(1993, tftc_104, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL) |
| 1257 | | GAME(1991, tmnt_104, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", GAME_IS_SKELETON_MECHANICAL) |
| 1258 | | GAME(1991, tmnt_103, tmnt_104, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", GAME_IS_SKELETON_MECHANICAL) |
| 1284 | GAME(1991, tmnt_104, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", GAME_IS_SKELETON_MECHANICAL) |
| 1285 | GAME(1991, tmnt_103, tmnt_104, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", GAME_IS_SKELETON_MECHANICAL) |
| 1259 | 1286 | GAME(1994, tomy_400, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", GAME_IS_SKELETON_MECHANICAL) |
| 1260 | 1287 | GAME(1994, tomy_h30, tomy_400, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00 Holland)", GAME_IS_SKELETON_MECHANICAL) |
| 1261 | 1288 | GAME(1994, wwfr_106, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.06)", GAME_IS_SKELETON_MECHANICAL) |