trunk/src/mame/drivers/dec8.c
| r18959 | r18960 | |
| 458 | 458 | membank("bank1")->set_entry(data >> 4); |
| 459 | 459 | |
| 460 | 460 | if ((data&1)==0) m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); |
| 461 | | if (data & 2) m_nmi_enable =1; else m_nmi_enable = 0; |
| 461 | m_nmi_enable = (data & 2) >> 1; |
| 462 | 462 | flip_screen_set(data & 0x08); |
| 463 | 463 | } |
| 464 | 464 | |
| r18959 | r18960 | |
| 533 | 533 | /* Used by Shackled, Last Mission, Captain Silver */ |
| 534 | 534 | WRITE8_MEMBER(dec8_state::shackled_int_w) |
| 535 | 535 | { |
| 536 | | #if 0 |
| 537 | | /* This is correct, but the cpus in Shackled need an interleave of about 5000! |
| 538 | | With lower interleave CPU 0 misses an interrupt at the start of the game |
| 539 | | (The last interrupt has not finished and been ack'd when the new one occurs */ |
| 540 | 536 | switch (offset) |
| 541 | 537 | { |
| 542 | 538 | case 0: /* CPU 2 - IRQ acknowledge */ |
| r18959 | r18960 | |
| 554 | 550 | m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); |
| 555 | 551 | return; |
| 556 | 552 | } |
| 557 | | #endif |
| 558 | | |
| 559 | | switch (offset) |
| 560 | | { |
| 561 | | case 0: /* CPU 2 - IRQ acknowledge */ |
| 562 | | return; |
| 563 | | case 1: /* CPU 1 - IRQ acknowledge */ |
| 564 | | return; |
| 565 | | case 2: /* i8751 - FIRQ acknowledge */ |
| 566 | | return; |
| 567 | | case 3: /* IRQ 1 */ |
| 568 | | m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); |
| 569 | | return; |
| 570 | | case 4: /* IRQ 2 */ |
| 571 | | m_subcpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); |
| 572 | | return; |
| 573 | | } |
| 574 | 553 | } |
| 575 | 554 | |
| 576 | 555 | /******************************************************************************/ |
| r18959 | r18960 | |
| 2025 | 2004 | } |
| 2026 | 2005 | } |
| 2027 | 2006 | |
| 2007 | // MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2028 | 2008 | |
| 2009 | /* TODO: These are raw guesses, only to get ~57,41 Hz, assume to be the same as dec0 */ |
| 2010 | #define DEC8_PIXEL_CLOCK XTAL_20MHz/4 |
| 2011 | #define DEC8_HTOTAL 256+74 |
| 2012 | #define DEC8_HBEND 0 |
| 2013 | #define DEC8_HBSTART 256 |
| 2014 | #define DEC8_VTOTAL 264 |
| 2015 | #define DEC8_VBEND 8 |
| 2016 | #define DEC8_VBSTART 256-8 |
| 2017 | |
| 2029 | 2018 | static MACHINE_CONFIG_START( lastmisn, dec8_state ) |
| 2030 | 2019 | |
| 2031 | 2020 | /* basic machine hardware */ |
| r18959 | r18960 | |
| 2038 | 2027 | MCFG_CPU_ADD("audiocpu", M6502, 1500000) |
| 2039 | 2028 | MCFG_CPU_PROGRAM_MAP(ym3526_s_map) |
| 2040 | 2029 | /* NMIs are caused by the main CPU */ |
| 2030 | |
| 2041 | 2031 | MCFG_QUANTUM_TIME(attotime::from_hz(12000)) |
| 2042 | 2032 | |
| 2043 | | |
| 2044 | 2033 | /* video hardware */ |
| 2045 | 2034 | MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") |
| 2046 | 2035 | |
| r18959 | r18960 | |
| 2048 | 2037 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2049 | 2038 | |
| 2050 | 2039 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2051 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2052 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2053 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2054 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2040 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2041 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2042 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2043 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2044 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2055 | 2045 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn) |
| 2056 | 2046 | |
| 2057 | 2047 | MCFG_GFXDECODE(shackled) |
| r18959 | r18960 | |
| 2085 | 2075 | MCFG_CPU_ADD("audiocpu", M6502, 1500000) |
| 2086 | 2076 | MCFG_CPU_PROGRAM_MAP(ym3526_s_map) |
| 2087 | 2077 | /* NMIs are caused by the main CPU */ |
| 2088 | | MCFG_QUANTUM_TIME(attotime::from_hz(4800)) |
| 2089 | 2078 | |
| 2079 | // MCFG_QUANTUM_TIME(attotime::from_hz(100000)) |
| 2080 | MCFG_QUANTUM_PERFECT_CPU("maincpu") // needs heavy sync, otherwise one of the two CPUs will miss an irq and makes the game to hang |
| 2090 | 2081 | |
| 2091 | 2082 | /* video hardware */ |
| 2092 | 2083 | MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") |
| r18959 | r18960 | |
| 2095 | 2086 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2096 | 2087 | |
| 2097 | 2088 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2098 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2099 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2100 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2101 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2089 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2090 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2091 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2092 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2093 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2102 | 2094 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_shackled) |
| 2103 | 2095 | |
| 2104 | 2096 | MCFG_GFXDECODE(shackled) |
| r18959 | r18960 | |
| 2142 | 2134 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2143 | 2135 | |
| 2144 | 2136 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2145 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2146 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2147 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2148 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2137 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2138 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2139 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2140 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2141 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2149 | 2142 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_gondo) |
| 2150 | 2143 | MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) |
| 2151 | 2144 | |
| r18959 | r18960 | |
| 2190 | 2183 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2191 | 2184 | |
| 2192 | 2185 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2193 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2194 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2195 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2196 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2186 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2187 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2188 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2189 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2190 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2197 | 2191 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_garyoret) |
| 2198 | 2192 | MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) |
| 2199 | 2193 | |
| r18959 | r18960 | |
| 2241 | 2235 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2242 | 2236 | |
| 2243 | 2237 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2244 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2245 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2246 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2247 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2238 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2239 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2240 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2241 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2242 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2248 | 2243 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_ghostb) |
| 2249 | 2244 | MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) |
| 2250 | 2245 | |
| r18959 | r18960 | |
| 2281 | 2276 | MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) /* verified on pcb */ |
| 2282 | 2277 | MCFG_CPU_PROGRAM_MAP(csilver_s_map) |
| 2283 | 2278 | /* NMIs are caused by the main CPU */ |
| 2279 | |
| 2284 | 2280 | MCFG_QUANTUM_TIME(attotime::from_hz(6000)) |
| 2285 | 2281 | |
| 2286 | | |
| 2287 | 2282 | /* video hardware */ |
| 2288 | 2283 | MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") |
| 2289 | 2284 | |
| r18959 | r18960 | |
| 2291 | 2286 | deco_karnovsprites_device::set_gfx_region(*device, 1); |
| 2292 | 2287 | |
| 2293 | 2288 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2294 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2295 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2296 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2297 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2289 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2290 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2291 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2292 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2293 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2298 | 2294 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn) |
| 2299 | 2295 | |
| 2300 | 2296 | MCFG_GFXDECODE(shackled) |
| r18959 | r18960 | |
| 2346 | 2342 | deco_mxc06_device::set_gfx_region(*device, 1); |
| 2347 | 2343 | |
| 2348 | 2344 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2349 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2350 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2351 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2352 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2345 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2346 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) |
| 2347 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2348 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2349 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2353 | 2350 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_oscar) |
| 2354 | 2351 | |
| 2355 | 2352 | MCFG_GFXDECODE(oscar) |
| r18959 | r18960 | |
| 2387 | 2384 | MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") |
| 2388 | 2385 | |
| 2389 | 2386 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2390 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2391 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2392 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2393 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2387 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2388 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2389 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2390 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2391 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2394 | 2392 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_srdarwin) |
| 2395 | 2393 | |
| 2396 | 2394 | MCFG_GFXDECODE(srdarwin) |
| r18959 | r18960 | |
| 2437 | 2435 | |
| 2438 | 2436 | |
| 2439 | 2437 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2440 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 2441 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2442 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2443 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2438 | // MCFG_SCREEN_REFRESH_RATE(58) |
| 2439 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) |
| 2440 | // MCFG_SCREEN_SIZE(32*8, 32*8) |
| 2441 | // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 2442 | MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) |
| 2444 | 2443 | MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_cobracom) |
| 2445 | 2444 | |
| 2446 | 2445 | MCFG_GFXDECODE(cobracom) |