From a9b8e822759eb4accff339654e3b8a19adb618b3 Mon Sep 17 00:00:00 2001 From: stephh Date: Sun, 11 Mar 2012 12:03:30 +0000 Subject: [PATCH] dec8.c improvements [stephh] : - lastmisn*, shackled, breywood, gondo, makyosen, garyoret, ghostb*, meikyuh*, csilver*, oscar*, srdarwin*, cobracom* : fixed Dip Switches and Inputs (after verification of the M6809/HD6309 code); coinage for games without real MCU is still a guess though - lastmisn*, csilver*, srdarwin* : added coinage simulation based on the Dip Switches - garyoret : use fake MCU based on 'gondo' instead of simulating it --- src/mame/drivers/dec8.c | 3476 +++++++++++++++++++------------------- src/mame/includes/dec8.h | 6 + 2 files changed, 1771 insertions(+), 1711 deletions(-) diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c index 50a85e81a23..7ac913b02d1 100644 --- a/src/mame/drivers/dec8.c +++ b/src/mame/drivers/dec8.c @@ -2,34 +2,36 @@ Various Data East 8 bit games: - Cobra Command (World) (c) 1988 Data East Corporation (6809) - Cobra Command (Japan) (c) 1988 Data East Corporation (6809) + Last Mission (rev 6) (c) 1986 Data East USA (2*6809 + I8751) + Last Mission (rev 5) (c) 1986 Data East USA (2*6809 + I8751) + Last Mission (Japan) (c) 1986 Data East Corporation (2*6809 + I8751) + Shackled (c) 1986 Data East USA (2*6809 + I8751) + Breywood (c) 1986 Data East Corporation (2*6809 + I8751) + Gondomania (c) 1987 Data East USA (6809 + I8751) + Makyou Senshi (c) 1987 Data East Corporation (6809 + I8751) + Garyo Retsuden (c) 1987 Data East Corporation (6809 + I8751) The Real Ghostbusters (2p) (c) 1987 Data East USA (6809 + I8751) The Real Ghostbusters (3p) (c) 1987 Data East USA (6809 + I8751) Meikyuu Hunter G (c) 1987 Data East Corporation (6809 + I8751) - Super Real Darwin (c) 1987 Data East Corporation (6809 + I8751) - Psycho-Nics Oscar (c) 1988 Data East USA (2*6809 + I8751) - Psycho-Nics Oscar (Japan) (c) 1987 Data East Corporation (2*6809 + I8751) - Gondomania (c) 1987 Data East USA (6809 + I8751) - Makyou Senshi (c) 1987 Data East Corporation (6809 + I8751) - Last Mission (rev 6) (c) 1986 Data East USA (2*6809 + I8751) - Last Mission (rev 5) (c) 1986 Data East USA (2*6809 + I8751) - Shackled (c) 1986 Data East USA (2*6809 + I8751) - Breywood (c) 1986 Data East Corporation (2*6809 + I8751) Captain Silver (World) (c) 1987 Data East Corporation (2*6809 + I8751) Captain Silver (Japan) (c) 1987 Data East Corporation (2*6809 + I8751) - Garyo Retsuden (Japan) (c) 1987 Data East Corporation (6809 + I8751) + Psycho-Nics Oscar (World) (c) 1987 Data East Corporation (2*6809 + I8751) + Psycho-Nics Oscar (US) (c) 1988 Data East USA (2*6809 + I8751) + Psycho-Nics Oscar (Japan) (c) 1987 Data East Corporation (2*6809 + I8751) + Super Real Darwin (World) (c) 1987 Data East Corporation (6809 + I8751) + Super Real Darwin (Japan) (c) 1987 Data East Corporation (6809 + I8751) + Cobra Command (World) (c) 1988 Data East Corporation (6809) + Cobra Command (Japan) (c) 1988 Data East Corporation (6809) All games use a 6502 for sound (some are encrypted), all games except Cobracom - use an Intel 8751 for protection & coinage. For these games the coinage dip - switch is not currently supported, they are fixed at 1 coin 1 credit. + use an Intel 8751 for protection & coinage. For the games without (fake) MCU, + the coinage dip switch (sometimes based on the manual) is simulated. Meikyuu Hunter G was formerly known as Mazehunter. Emulation by Bryan McPhail, mish@tendril.co.uk To do: - Support coinage options for all i8751 emulations. Super Real Darwin 'Double' sprites appearing from the top of the screen are clipped Strangely coloured butterfly on Garyo Retsuden water levels! @@ -162,9 +164,188 @@ static WRITE8_HANDLER( dec8_i8751_w ) * ********************************/ +static WRITE8_HANDLER( lastmisn_i8751_w ) +{ + dec8_state *state = space->machine().driver_data(); + + /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */ + int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}}; /* slot 1 : coins needed */ + int lcred1[2][4] = {{1, 2, 3, 1}, {1, 2, 3, 5}}; /* slot 1 : credits awarded */ + int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}}; /* slot 2 : coins needed */ + int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}}; /* slot 2 : credits awarded */ + + state->m_i8751_return = 0; + + switch (offset) + { + case 0: /* High byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); + device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */ + break; + case 1: /* Low byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; + break; + } + + /* Coins are controlled by the i8751 */ + if ((input_port_read(space->machine(), "IN2") & 3) == 3) state->m_latch = 1; + if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch) + { + state->m_coin1++; + state->m_latch = 0; + state->m_snd = 0x400; + state->m_i8751_return = 0x400; + if (state->m_coin1>=state->m_need1) + { + state->m_coin1-=state->m_need1; + state->m_credits+=state->m_cred1; + } + } + if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch) + { + state->m_coin2++; + state->m_latch = 0; + state->m_snd = 0x400; + state->m_i8751_return = 0x400; + if (state->m_coin2>=state->m_need2) + { + state->m_coin2-=state->m_need2; + state->m_credits+=state->m_cred2; + } + } + if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */ + + if (state->m_i8751_value == 0x0401) state->m_i8751_return = 0; /* ??? */ + + if (state->m_i8751_value == 0x007a) { state->m_i8751_return = 0x85; state->m_coinage_id = 0; } /* Japanese version ID */ + if (state->m_i8751_value == 0x007b) { state->m_i8751_return = 0x84; state->m_coinage_id = 0; } /* US version ID */ + + if (offset == 0) + { + if ((state->m_i8751_value >> 8) == 0x01) /* Coinage settings */ + { + state->m_i8751_return = state->m_i8751_value; + state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + } + if ((state->m_i8751_value >> 8) == 0x02) { state->m_i8751_return = state->m_snd | ((state->m_credits / 10) << 4) | (state->m_credits % 10); state->m_snd = 0; } /* Credits request */ + if ((state->m_i8751_value >> 8) == 0x03 && state->m_credits) { state->m_i8751_return = 0; state->m_credits--; } /* Credits clear */ + } +} + +static WRITE8_HANDLER( shackled_i8751_w ) +{ + dec8_state *state = space->machine().driver_data(); + state->m_i8751_return = 0; + + switch (offset) + { + case 0: /* High byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); + device_set_input_line(state->m_subcpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal sub cpu */ + break; + case 1: /* Low byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; + break; + } + + /* Coins are controlled by the i8751 */ + if (/*(input_port_read(space->machine(), "IN2") & 3) == 3*/!state->m_latch) { state->m_latch = 1; state->m_coin1 = state->m_coin2 = 0; } + if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch) { state->m_coin1 = 1; state->m_latch = 0; } + if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch) { state->m_coin2 = 1; state->m_latch = 0; } + + if (state->m_i8751_value == 0x0102) state->m_i8751_return = 0; /* ??? */ + if (state->m_i8751_value == 0x0101) state->m_i8751_return = 0; /* ??? */ + if (state->m_i8751_value == 0x0400) state->m_i8751_return = 0; /* ??? */ + + if (state->m_i8751_value == 0x0050) state->m_i8751_return = 0; /* Japanese version (Breywood) ID */ + if (state->m_i8751_value == 0x0051) state->m_i8751_return = 0; /* US version (Shackled) ID */ + + if (state->m_i8751_value == 0x8101) state->m_i8751_return = ((((state->m_coin2 / 10) << 4) | (state->m_coin2 % 10)) << 0) | + ((((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10)) << 8); /* Coins */ +} + +static WRITE8_HANDLER( csilver_i8751_w ) +{ + dec8_state *state = space->machine().driver_data(); + + /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */ + int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}}; /* slot 1 : coins needed */ + int lcred1[2][4] = {{1, 2, 3, 1}, {2, 3, 4, 6}}; /* slot 1 : credits awarded */ + int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}}; /* slot 2 : coins needed */ + int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}}; /* slot 2 : credits awarded */ + + state->m_i8751_return = 0; + + switch (offset) + { + case 0: /* High byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); + device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */ + break; + case 1: /* Low byte */ + state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; + break; + } + + /* Coins are controlled by the i8751 */ + if ((input_port_read(space->machine(), "IN2") & 3) == 3) state->m_latch = 1; + if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch) + { + state->m_coin1++; + state->m_latch = 0; + state->m_snd = 0x1200; + state->m_i8751_return = 0x1200; + if (state->m_coin1>=state->m_need1) + { + state->m_coin1-=state->m_need1; + state->m_credits+=state->m_cred1; + } + } + if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch) + { + state->m_coin2++; + state->m_latch = 0; + state->m_snd = 0x1200; + state->m_i8751_return = 0x1200; + if (state->m_coin2>=state->m_need2) + { + state->m_coin2-=state->m_need2; + state->m_credits+=state->m_cred2; + } + } + if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */ + + if (state->m_i8751_value == 0x054a) { state->m_i8751_return = 0xb5; state->m_coinage_id = 0; } /* Japanese version ID */ + if (state->m_i8751_value == 0x054c) { state->m_i8751_return = 0xb3; state->m_coinage_id = 1; } /* World version ID */ + + if (offset == 0) + { + if ((state->m_i8751_value >> 8) == 0x01) /* Coinage settings */ + { + state->m_i8751_return = state->m_i8751_value; + state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + } + if ((state->m_i8751_value >> 8) == 0x02) { state->m_i8751_return = state->m_snd | state->m_credits; state->m_snd = 0; } /* Credits request */ + if ((state->m_i8751_value >> 8) == 0x03 && state->m_credits) { state->m_i8751_return = 0; state->m_credits--; } /* Credits clear */ + } +} + static WRITE8_HANDLER( srdarwin_i8751_w ) { dec8_state *state = space->machine().driver_data(); + + /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */ + int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}}; /* slot 1 : coins needed */ + int lcred1[2][4] = {{1, 2, 3, 1}, {2, 3, 4, 6}}; /* slot 1 : credits awarded */ + int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}}; /* slot 2 : coins needed */ + int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}}; /* slot 2 : credits awarded */ + state->m_i8751_return = 0; switch (offset) @@ -177,19 +358,50 @@ static WRITE8_HANDLER( srdarwin_i8751_w ) break; } - if (state->m_i8751_value == 0x0000) {state->m_i8751_return = 0; state->m_coin1 = 0;} - if (state->m_i8751_value == 0x3063) state->m_i8751_return = 0x9c; /* Protection - Japanese version */ - if (state->m_i8751_value == 0x306b) state->m_i8751_return = 0x94; /* Protection - World version */ - if ((state->m_i8751_value & 0xff00) == 0x4000) state->m_i8751_return = state->m_i8751_value; /* Coinage settings */ - if (state->m_i8751_value == 0x5000) state->m_i8751_return = ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10); /* Coin request */ - if (state->m_i8751_value == 0x6000) {state->m_i8751_value = -1; state->m_coin1--; } /* Coin clear */ - /* Nb: Command 0x4000 for setting coinage options is not sup3ed */ - if ((input_port_read(space->machine(), "FAKE") & 1) == 1) state->m_latch = 1; - if ((input_port_read(space->machine(), "FAKE") & 1) != 1 && state->m_latch) {state->m_coin1++; state->m_latch = 0;} + /* Coins are controlled by the i8751 */ + if ((input_port_read(space->machine(), "I8751") & 3) == 3) state->m_latch = 1; + if ((input_port_read(space->machine(), "I8751") & 1) != 1 && state->m_latch) + { + state->m_coin1++; + state->m_latch = 0; + if (state->m_coin1>=state->m_need1) + { + state->m_coin1-=state->m_need1; + state->m_credits+=state->m_cred1; + } + } + if ((input_port_read(space->machine(), "I8751") & 2) != 2 && state->m_latch) + { + state->m_coin2++; + state->m_latch = 0; + if (state->m_coin2>=state->m_need2) + { + state->m_coin2-=state->m_need2; + state->m_credits+=state->m_cred2; + } + } + if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */ - /* This next value is the index to a series of tables, - each table controls the end of level bad guy, wrong values crash the - cpu right away via a bogus jump. + if (state->m_i8751_value == 0x0000) state->m_i8751_return = 0; /* ??? */ + + if (state->m_i8751_value == 0x3063) { state->m_i8751_return = 0x9c; state->m_coinage_id = 0; } /* Japanese version ID */ + if (state->m_i8751_value == 0x306b) { state->m_i8751_return = 0x94; state->m_coinage_id = 1; } /* World version ID */ + + if ((state->m_i8751_value >> 8) == 0x40) /* Coinage settings */ + { + state->m_i8751_return = state->m_i8751_value; + state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0]; + state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2]; + } + if (state->m_i8751_value == 0x5000) { state->m_i8751_return = ((state->m_credits / 10) << 4) | (state->m_credits % 10); } /* Credits request */ + if (state->m_i8751_value == 0x6000 && state->m_credits) { state->m_i8751_value = -1; state->m_credits--; } /* Credits clear */ + +/* + This next value is the index to a series of tables, + each table controls the end of level bad guy, + wrong values crash the cpu right away via a bogus jump. Level number requested is in low byte @@ -221,7 +433,6 @@ bb63 = Square things again The table below is hopefully correct thanks to Jose Miguel Morales Farreras, but Boss #6 is uncomfirmed as correct. - */ if (state->m_i8751_value == 0x8000) state->m_i8751_return = 0xf580 + 0; /* Boss #1: Snake + Bees */ if (state->m_i8751_value == 0x8001) state->m_i8751_return = 0xf580 + 30; /* Boss #2: 4 Corners */ @@ -236,126 +447,6 @@ bb63 = Square things again if (state->m_i8751_value == 0x800a) state->m_i8751_return = 0xf580 + 42; /* End Game(bad address?) */ } - -static WRITE8_HANDLER( shackled_i8751_w ) -{ - dec8_state *state = space->machine().driver_data(); - state->m_i8751_return = 0; - - switch (offset) - { - case 0: /* High byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); - device_set_input_line(state->m_subcpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */ - break; - case 1: /* Low byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; - break; - } - - /* Coins are controlled by the i8751 */ - if (/*(input_port_read(space->machine(), "IN2") & 3) == 3*/!state->m_latch) {state->m_latch = 1; state->m_coin1 = state->m_coin2 = 0;} - if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch) {state->m_coin1 = 1; state->m_latch = 0;} - if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch) {state->m_coin2 = 1; state->m_latch = 0;} - - if (state->m_i8751_value == 0x0050) state->m_i8751_return = 0; /* Breywood ID */ - if (state->m_i8751_value == 0x0051) state->m_i8751_return = 0; /* Shackled ID */ - if (state->m_i8751_value == 0x0102) state->m_i8751_return = 0; /* ?? */ - if (state->m_i8751_value == 0x0101) state->m_i8751_return = 0; /* ?? */ - if (state->m_i8751_value == 0x8101) state->m_i8751_return = ((state->m_coin2 / 10) << 4) | (state->m_coin2 % 10) | - ((((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10)) << 8); /* Coins */ -} - -static WRITE8_HANDLER( lastmisn_i8751_w ) -{ - dec8_state *state = space->machine().driver_data(); - state->m_i8751_return = 0; - - switch (offset) - { - case 0: /* High byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); - device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */ - break; - case 1: /* Low byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; - break; - } - - if (offset == 0) - { - /* Coins are controlled by the i8751 */ - if ((input_port_read(space->machine(), "IN2") & 3) == 3 && !state->m_latch) state->m_latch = 1; - if ((input_port_read(space->machine(), "IN2") & 3) != 3 && state->m_latch) {state->m_coin1++; state->m_latch = 0; state->m_snd = 0x400; state->m_i8751_return = 0x400; return;} - if (state->m_i8751_value == 0x007a) state->m_i8751_return = 0x0185; /* Japan ID code */ - if (state->m_i8751_value == 0x007b) state->m_i8751_return = 0x0184; /* USA ID code */ - if (state->m_i8751_value == 0x0001) {state->m_coin1 = state->m_snd = 0;}//??? - if (state->m_i8751_value == 0x0000) {state->m_i8751_return = 0x0184;}//??? - if (state->m_i8751_value == 0x0401) state->m_i8751_return = 0x0184; //??? - if ((state->m_i8751_value >> 8) == 0x01) state->m_i8751_return = 0x0184; /* Coinage setup */ - if ((state->m_i8751_value >> 8) == 0x02) {state->m_i8751_return = state->m_snd | ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10); state->m_snd = 0;} /* Coin return */ - if ((state->m_i8751_value >> 8) == 0x03 && state->m_coin1) {state->m_i8751_return = 0; state->m_coin1--; } /* Coin clear */ - } -} - -static WRITE8_HANDLER( csilver_i8751_w ) -{ - dec8_state *state = space->machine().driver_data(); - state->m_i8751_return = 0; - - switch (offset) - { - case 0: /* High byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); - device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */ - break; - case 1: /* Low byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; - break; - } - - if (offset == 0) - { - /* Coins are controlled by the i8751 */ - if ((input_port_read(space->machine(), "IN2") & 3) == 3 && !state->m_latch) state->m_latch = 1; - if ((input_port_read(space->machine(), "IN2") & 3) != 3 && state->m_latch) {state->m_coin1++; state->m_latch = 0; state->m_snd = 0x1200; state->m_i8751_return = 0x1200; return;} - - if (state->m_i8751_value == 0x054a) {state->m_i8751_return = ~(0x4a); state->m_coin1 = 0; state->m_snd = 0;} /* Captain Silver (Japan) ID */ - if (state->m_i8751_value == 0x054c) {state->m_i8751_return = ~(0x4c); state->m_coin1 = 0; state->m_snd = 0;} /* Captain Silver (World) ID */ - if ((state->m_i8751_value >> 8) == 0x01) state->m_i8751_return = 0; /* Coinage - Not Supported */ - if ((state->m_i8751_value >> 8) == 0x02) {state->m_i8751_return = state->m_snd | state->m_coin1; state->m_snd = 0; } /* Coin Return */ - if ((state->m_i8751_value >> 8) == 0x03 && state->m_coin1) {state->m_i8751_return = 0; state->m_coin1--;} /* Coin Clear */ - } -} - -static WRITE8_HANDLER( garyoret_i8751_w ) -{ - dec8_state *state = space->machine().driver_data(); - state->m_i8751_return = 0; - - switch (offset) - { - case 0: /* High byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8); - break; - case 1: /* Low byte */ - state->m_i8751_value = (state->m_i8751_value & 0xff00) | data; - break; - } - - /* Coins are controlled by the i8751 */ - if ((input_port_read(space->machine(), "I8751") & 3) == 3) state->m_latch = 1; - if ((input_port_read(space->machine(), "I8751") & 1) != 1 && state->m_latch) {state->m_coin1++; state->m_latch = 0;} - if ((input_port_read(space->machine(), "I8751") & 2) != 2 && state->m_latch) {state->m_coin2++; state->m_latch = 0;} - - /* Work out return values */ - if ((state->m_i8751_value >> 8) == 0x00) {state->m_i8751_return = 0; state->m_coin1 = state->m_coin2 = 0;} - if ((state->m_i8751_value >> 8) == 0x01) state->m_i8751_return = 0x59a; /* ID */ - if ((state->m_i8751_value >> 8) == 0x04) state->m_i8751_return = state->m_i8751_value; /* Coinage settings (Not supported) */ - if ((state->m_i8751_value >> 8) == 0x05) {state->m_i8751_return = 0x00 | ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10); } /* Coin 1 */ - if ((state->m_i8751_value >> 8) == 0x06 && state->m_coin1 && !offset) {state->m_i8751_return = 0x600; state->m_coin1--; } /* Coin 1 clear */ -} - /******************************************************************************/ static WRITE8_HANDLER( dec8_bank_w ) @@ -503,134 +594,6 @@ static WRITE8_HANDLER( flip_screen_w ) { flip_screen_set(space->machine(), data) /******************************************************************************/ - -static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) - AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */ - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) - AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w) - AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") /* VBL & coins */ - AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_pf_control0_8bit_w) - AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_pf_control1_8bit_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w) - AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) - AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror? - AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2") /* Player 3 */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") /* Start buttons + VBL */ - AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1") /* Dip */ - AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) - AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w) - AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r) - AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w) - AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r) - AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram) - AM_RANGE(0x1000, 0x13ff) AM_RAM - AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) - AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w) - AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w) /* Maybe.. */ - AM_RANGE(0x1803, 0x1803) AM_WRITENOP /* NMI ack */ - AM_RANGE(0x1804, 0x1804) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram8_device, write) /* DMA */ - AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */ - AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */ - AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */ - AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) - AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r) /* Player 1 rotary */ - AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r) /* Player 2 rotary */ - AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3") /* VBL */ - AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2") /* Fire buttons */ - AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) - AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ - AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r) - AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r) - AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0f00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0") - AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1") - AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */ - AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1") - AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) - AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w) - AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w) /* BNKS */ - AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */ - AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP /* COINCL */ - AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( oscar_sub_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0f00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - static ADDRESS_MAP_START( lastmisn_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE("share3") AM_BASE_GENERIC(paletteram) @@ -726,6 +689,75 @@ static ADDRESS_MAP_START( shackled_sub_map, AS_PROGRAM, 8 ) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END +static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x17ff) AM_RAM + AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) + AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) + AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ + AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ + AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ + AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r) /* Player 1 rotary */ + AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r) /* Player 2 rotary */ + AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3") /* VBL */ + AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2") /* Fire buttons */ + AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) + AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) + AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ + AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r) + AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r) + AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w) + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x17ff) AM_RAM + AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) + AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) + AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ + AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ + AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ + AM_RANGE(0x3808, 0x3808) AM_READNOP /* ? */ + AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1") /* Player 2 + VBL */ + AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0") /* Player 1 */ + AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) + AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) + AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ + AM_RANGE(0x3838, 0x3839) AM_WRITE(dec8_i8751_w) + AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r) + AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r) + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x0fff) AM_RAM + AM_RANGE(0x1000, 0x17ff) AM_RAM + AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) + AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) + AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror? + AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w) + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ + AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w) + AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ + AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2") /* Player 3 */ + AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") /* Start buttons + VBL */ + AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1") /* Dip */ + AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) + AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w) + AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r) + AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w) + AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r) + AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w) + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROM +ADDRESS_MAP_END + static ADDRESS_MAP_START( csilver_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE("share3") AM_BASE_GENERIC(paletteram) @@ -767,24 +799,82 @@ static ADDRESS_MAP_START( csilver_sub_map, AS_PROGRAM, 8 ) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) - AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) +static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") + AM_RANGE(0x0f00, 0x0fff) AM_RAM + AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") + AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) + AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ + AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0") + AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1") + AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */ + AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0") /* Dip 1 */ + AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1") + AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) + AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w) + AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ + AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w) /* BNKS */ + AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */ + AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP /* COINCL */ + AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( oscar_sub_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") + AM_RANGE(0x0f00, 0x0fff) AM_RAM + AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") + AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) + AM_RANGE(0x4000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x05ff) AM_RAM + AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram) + AM_RANGE(0x1000, 0x13ff) AM_RAM + AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) + AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w) + AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w) /* Maybe.. */ + AM_RANGE(0x1803, 0x1803) AM_WRITENOP /* NMI ack */ + AM_RANGE(0x1804, 0x1804) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram8_device, write) /* DMA */ + AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */ + AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */ + AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */ + AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x3808, 0x3808) AM_READNOP /* ? */ - AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1") /* Player 2 + VBL */ - AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) - AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ - AM_RANGE(0x3838, 0x3839) AM_WRITE(garyoret_i8751_w) - AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r) - AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r) + AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */ + AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */ + AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x07ff) AM_RAM + AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) + AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) + AM_RANGE(0x1800, 0x1fff) AM_RAM + AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */ + AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ + AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ + AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0") /* Dip 1 */ + AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ + AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w) + AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w) + AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") /* VBL & coins */ + AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_pf_control0_8bit_w) + AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_pf_control1_8bit_w) + AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w) + AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ + AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -894,265 +984,199 @@ ADDRESS_MAP_END /******************************************************************************/ #define PLAYER1_JOYSTICK /* Player 1 controls */ \ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY \ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY \ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY #define PLAYER2_JOYSTICK /* Player 2 controls */ \ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL \ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL \ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL \ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL \ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL \ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL \ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL -static INPUT_PORTS_START( cobracom ) + +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( lastmisn ) PORT_START("IN0") PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* bomb */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* select */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL /* bomb */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL /* select */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") 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_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_START("DSW0") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x02, "4" ) - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPSETTING( 0x00, "Infinite (Cheat)") - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x20, "50k, 150k" ) - PORT_DIPSETTING( 0x00, "100k, 200k" ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("DSW1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) /* tables at 0x82c1 (4 words) and 0xde38 (3 words) in 'lastmisn', 0x82c1 and 0xde17 in 'lastmisno' */ + PORT_DIPSETTING( 0x06, "30k 70k 70k+" ) + PORT_DIPSETTING( 0x04, "40k 90k 90k+" ) + PORT_DIPSETTING( 0x02, "40k and 80k" ) + PORT_DIPSETTING( 0x00, "50k only" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x80, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) INPUT_PORTS_END -static INPUT_PORTS_START( ghostb ) +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( lastmisnj ) + PORT_INCLUDE(lastmisn) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) /* tables at 0x82b7 (4 words) and 0xdd29 (3 words) */ + PORT_DIPSETTING( 0x06, "30k 50k 50k+" ) + PORT_DIPSETTING( 0x04, "30k 70k 70k+" ) + PORT_DIPSETTING( 0x02, "50k 100k 100k+" ) + PORT_DIPSETTING( 0x00, "50k only" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Hard ) ) /* "difficult" */ + PORT_DIPSETTING( 0x08, DEF_STR( Very_Hard ) ) /* "very difficult" */ + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) /* "top difficult" */ + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) +INPUT_PORTS_END + + +/* verified from M6809 code */ +static INPUT_PORTS_START( shackled ) PORT_START("IN0") PLAYER1_JOYSTICK PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN1") PLAYER2_JOYSTICK PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_START("DSW0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x04, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x10, 0x40, "Leave Off" ) /* game doesn't boot when this is On - code at 0x401a - related to MCU - "dias" in Dip Switches page */ PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("I8751") - /* Low 4 bits not connected on schematics */ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "1" ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x00, "Infinite (Cheat)") - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + /* tables in main CPU : 0x859b (Help), 0x85e9 (6-Help), 0x8fbe (Coin), 0x91b6 (Heart) */ + PORT_DIPNAME( 0x07, 0x07, "Coin/Heart/Help/6-Help" ) /* name from Dip Switches page */ + PORT_DIPSETTING( 0x00, "2/100/50/200" ) + PORT_DIPSETTING( 0x01, "4/100/60/300" ) + PORT_DIPSETTING( 0x02, "6/200/70/300" ) + PORT_DIPSETTING( 0x03, "8/200/80/400" ) + PORT_DIPSETTING( 0x07, "10/200/100/500" ) + PORT_DIPSETTING( 0x06, "12/300/100/600" ) + PORT_DIPSETTING( 0x05, "18/400/200/700" ) + PORT_DIPSETTING( 0x04, "20/500/200/800" ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x30, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Very_Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x30, 0x30, "Scene Time" ) - PORT_DIPSETTING( 0x00, "4.00" ) - PORT_DIPSETTING( 0x10, "4.30" ) - PORT_DIPSETTING( 0x30, "5.00" ) - PORT_DIPSETTING( 0x20, "6.00" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x40, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x80, 0x80, "Beam Energy Pickup" ) /* Ghostb only */ - PORT_DIPSETTING( 0x00, "Up 1.5%" ) - PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( ghostb3 ) - PORT_INCLUDE(ghostb) - - PORT_MODIFY("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) - - PORT_MODIFY("DSW0") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) -INPUT_PORTS_END - -static INPUT_PORTS_START( meikyuh ) - PORT_INCLUDE(ghostb) - - PORT_MODIFY("I8751") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) +/* verified from M6809 code */ +static INPUT_PORTS_START( breywood ) + PORT_INCLUDE(shackled) + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x0f, 0x0f, "Power" ) /* table at 0x41be in sub CPU */ + PORT_DIPSETTING( 0x07, "200" ) + PORT_DIPSETTING( 0x0b, "300" ) + PORT_DIPSETTING( 0x03, "400" ) + PORT_DIPSETTING( 0x0d, "500" ) + PORT_DIPSETTING( 0x05, "600" ) + PORT_DIPSETTING( 0x09, "700" ) + PORT_DIPSETTING( 0x01, "800" ) + PORT_DIPSETTING( 0x0e, "900" ) + PORT_DIPSETTING( 0x0f, "1000" ) + PORT_DIPSETTING( 0x06, "2000" ) + PORT_DIPSETTING( 0x0a, "3000" ) + PORT_DIPSETTING( 0x02, "4000" ) + PORT_DIPSETTING( 0x0c, "5000" ) + PORT_DIPSETTING( 0x04, "6000" ) + PORT_DIPSETTING( 0x08, "7000" ) + PORT_DIPSETTING( 0x00, "8000" ) INPUT_PORTS_END -static INPUT_PORTS_START( srdarwin ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_VBLANK ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "1" ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x00, "28 (Cheat)") - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Continues ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("FAKE") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) /* Fake */ -INPUT_PORTS_END - +/* verified from HD6309 code - 'makyosen' coinage needs further checking when its REAL MCU is available */ static INPUT_PORTS_START( gondo ) PORT_START("IN0") PLAYER1_JOYSTICK @@ -1187,7 +1211,7 @@ static INPUT_PORTS_START( gondo ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) /* produces sound but gives 0 credits - coinage not initialised in the MCU */ PORT_START("AN0") /* player 1 12-way rotary control */ PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12) @@ -1196,26 +1220,24 @@ static INPUT_PORTS_START( gondo ) PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12) PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) /* table at 0x01b8 in MCU (4 bytes : coins in 4 MSbits and credits in 4 LSbits) */ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) /* table at 0x01bc in MCU (4 bytes : coins in 4 MSbits and credits in 4 LSbits) */ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, "Swap buttons" ) /* code at 0x8a2b in 'gondo', 0x88c5 in 'makyosen' - undocumented in the manual */ PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1224,51 +1246,43 @@ static INPUT_PORTS_START( gondo ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x00, "Infinite (Cheat)") + PORT_DIPSETTING( 0x00, "Infinite (Cheat)") /* gives 99 lives */ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPSETTING( 0x10, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) INPUT_PORTS_END -static INPUT_PORTS_START( oscar ) + +/* verified from HD6309 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( garyoret ) PORT_START("IN0") PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* bomb */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("IN1") PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("IN2") - 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_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) /* bomb */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) + PORT_START("I8751") /* hooked up on the (fake) i8751 */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) /* produces sound but gives 0 credits - coinage not initialised in the (fake) MCU */ + PORT_START("DSW0") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) @@ -1280,9 +1294,214 @@ static INPUT_PORTS_START( oscar ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x10, 0x10, "Freeze Mode" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) /* not tested - no cocktail when simultaneous players anyway */ + + PORT_START("DSW1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x40, 0x40, "Leave Off" ) /* game doesn't boot when this is On - code at 0x807f and test at 0x819e */ + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) +INPUT_PORTS_END + + +/* verified from HD6309 code */ +static INPUT_PORTS_START( ghostb ) + PORT_START("IN0") + PLAYER1_JOYSTICK + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* "FIRE" */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* beam / upgradable shot when out of energy */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PLAYER2_JOYSTICK + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* "FIRE" */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) /* beam / upgradable shot when out of energy */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("I8751") + /* Low 4 bits not connected on schematics */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) /* produce sound but gives 0 credits - "ANDA" instruction at 0x8a5a */ + + PORT_START("DSW0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) /* not tested - no cocktail when simultaneous players anyway */ + + PORT_START("DSW1") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) /* lives are added when STARTn is pressed */ + PORT_DIPSETTING( 0x01, "1" ) + PORT_DIPSETTING( 0x03, "3" ) + PORT_DIPSETTING( 0x02, "5" ) + PORT_DIPSETTING( 0x00, "Invulnerability (Cheat)") /* gives 1 life */ + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x30, 0x30, "Max Scene Time" ) /* 1:00 is added when STARTn is pressed until max scene time is reached */ + PORT_DIPSETTING( 0x00, "4:00" ) + PORT_DIPSETTING( 0x10, "4:30" ) + PORT_DIPSETTING( 0x30, "5:00" ) + PORT_DIPSETTING( 0x20, "6:00" ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x40, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, "Energy Bonus" ) /* energy is set to value each new life */ + PORT_DIPSETTING( 0x80, DEF_STR( None ) ) /* 0x0100 */ + PORT_DIPSETTING( 0x00, "+25%" ) /* 0x0140 */ +INPUT_PORTS_END + +/* verified from HD6309 code */ +static INPUT_PORTS_START( ghostb2a ) + PORT_INCLUDE(ghostb) + + /* BUTTON1 : upgradable shot - BUTTON2 : beam (provided you have energy) */ + + PORT_MODIFY("I8751") + /* Low 4 bits not connected on schematics */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) /* produce sound but gives 0 lives - "ANDA" instruction at 0x8a20 */ + + PORT_MODIFY("DSW0") + /* NO start buttons - to start a game, press any button from any player */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_MODIFY("DSW1") + /* lives are added when COINn is pressed */ + /* 1:00 is added when COINn is pressed until max scene time is reached */ + PORT_DIPNAME( 0x80, 0x80, "Energy Bonus" ) /* energy is added when COINn is pressed */ + PORT_DIPSETTING( 0x80, DEF_STR( None ) ) /* 0x0040 */ + PORT_DIPSETTING( 0x00, "+50%" ) /* 0x0060 */ +INPUT_PORTS_END + +/* verified from HD6309 code */ +static INPUT_PORTS_START( ghostb3 ) + PORT_INCLUDE(ghostb2a) + + PORT_MODIFY("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) /* upgradable shot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) /* beam (provided you have energy) */ + + PORT_MODIFY("I8751") + /* Low 4 bits not connected on schematics */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) +INPUT_PORTS_END + +/* verified from HD6309 code */ +static INPUT_PORTS_START( meikyuh ) + PORT_INCLUDE(ghostb) + + PORT_MODIFY("I8751") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) /* gives 4 credits for 14 coins ! */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + /* BUTTON1 : upgradable shot - BUTTON2 : circular fire (provided you have energy) - BUTTON1 + BUTTON2 : beam (provided you have energy) */ + + PORT_MODIFY("DSW1") + /* lives are added when STARTn is pressed - 1 extra life is awarded on 2nd credit and after for the same player who gets then 2, 4 or 6 additional lives */ + /* max time scene is always 6:00 at start - 0:30 is subed every 8 levels - 1:00 is added when STARTn is pressed until max scene time is reached */ + PORT_DIPNAME( 0x10, 0x10, "Energy Bonus" ) /* energy is added when STARTn is pressed */ + PORT_DIPSETTING( 0x10, DEF_STR( None ) ) /* 0x0020 */ + PORT_DIPSETTING( 0x00, "+50%" ) /* 0x0030 */ + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x80, "Freeze" ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( csilver ) + PORT_START("IN0") + PLAYER1_JOYSTICK + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* sword */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* jump */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PLAYER2_JOYSTICK + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL /* sword */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL /* jump */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) + + PORT_START("DSW0") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) @@ -1298,44 +1517,60 @@ static INPUT_PORTS_START( oscar ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x00, "Infinite (Cheat)") + PORT_DIPSETTING( 0x00, "255 (Cheat)") PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x30, "Every 40000" ) - PORT_DIPSETTING( 0x20, "Every 60000" ) - PORT_DIPSETTING( 0x10, "Every 90000" ) - PORT_DIPSETTING( 0x00, "50000 only" ) - PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x40, 0x40, "No Key for Door (Cheat)") /* code at 0x9816 in sub CPU */ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) INPUT_PORTS_END -static INPUT_PORTS_START( oscaru ) +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( csilverj ) + PORT_INCLUDE(csilver) + + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) +INPUT_PORTS_END + + +/* verified from HD6309 code */ +static INPUT_PORTS_START( oscar ) PORT_START("IN0") PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* jump */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* select */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_START("IN1") PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL /* shoot */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL /* jump */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL /* select */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("IN2") 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( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* always adds 1 credit */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1343,12 +1578,12 @@ static INPUT_PORTS_START( oscaru ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) /* table at 0xf8e3 (4 * 2 bytes : coins then credits) */ PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) /* table at 0xf8eb (4 * 2 bytes : coins then credits) */ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) @@ -1377,12 +1612,12 @@ static INPUT_PORTS_START( oscaru ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x30, "Every 40000" ) - PORT_DIPSETTING( 0x20, "Every 60000" ) - PORT_DIPSETTING( 0x10, "Every 90000" ) - PORT_DIPSETTING( 0x00, "50000 only" ) - PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) /* tables at 0x82d8 (4 words) and 0xf3fe (3 words) */ + PORT_DIPSETTING( 0x30, "40k 100k 60k+" ) + PORT_DIPSETTING( 0x20, "60k 160k 100k+" ) + PORT_DIPSETTING( 0x10, "90k 240k 150k+" ) + PORT_DIPSETTING( 0x00, "50k only" ) + PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") /* not when falling into void or water - also gives infinite time */ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) @@ -1390,272 +1625,64 @@ static INPUT_PORTS_START( oscaru ) PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) INPUT_PORTS_END -static INPUT_PORTS_START( lastmisn ) +/* verified from HD6309 code */ +static INPUT_PORTS_START( oscarj ) + PORT_INCLUDE(oscar) + + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) /* table at 0xf8d6 (4 * 2 bytes : coins then credits) in 'oscarj1', 0xf8e6 in 'oscarj2', 0xf8f2 in 'oscaru' */ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) /* table at 0xf8de (4 * 2 bytes : coins then credits) in 'oscarj1', 0xf8ee in 'oscarj2', 0xf8fa in 'oscaru' */ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) + + /* bonus lives : tables at 0x82d8 (4 words) and 0xf3f1 (3 words) in 'oscarj1', 0x82de and 0xf401 in 'orscarj2', 0x82d8 and 0xf412 in 'orscaru' - same as in 'oscar' */ +INPUT_PORTS_END + + +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( srdarwin ) PORT_START("IN0") - PLAYER1_JOYSTICK + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("IN1") - PLAYER2_JOYSTICK + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("IN2") + PORT_START("I8751") /* Fake port for i8751 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_START("DSW0") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x06, "30k, 70k then every 70k" ) - PORT_DIPSETTING( 0x04, "40k, 90k then every 90k" ) - PORT_DIPSETTING( 0x02, "40k and 80k" ) - PORT_DIPSETTING( 0x00, "50k only" ) - PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Unused according to the manual */ - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x80, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( lastmisnj ) - PORT_START("IN0") - PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN1") - PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x06, "30k, 50k then every 50k" ) - PORT_DIPSETTING( 0x04, "30k, 70k then every 70k" ) - PORT_DIPSETTING( 0x02, "50k, 100k then every 100k" ) - PORT_DIPSETTING( 0x00, "50k only" ) - PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Unused according to the manual */ - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( shackled ) - PORT_START("IN0") - PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("IN1") - PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* All marked as unused in the manual */ - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Leave Off" ) /* game doesn't boot when this is On */ - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Freeze" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x0f, 0x0f, "Power" ) - PORT_DIPSETTING( 0x07, "200" ) - PORT_DIPSETTING( 0x0b, "300" ) - PORT_DIPSETTING( 0x03, "400" ) - PORT_DIPSETTING( 0x0d, "500" ) - PORT_DIPSETTING( 0x05, "600" ) - PORT_DIPSETTING( 0x09, "700" ) - PORT_DIPSETTING( 0x01, "800" ) - PORT_DIPSETTING( 0x0e, "900" ) - PORT_DIPSETTING( 0x0f, "1000" ) - PORT_DIPSETTING( 0x06, "2000" ) - PORT_DIPSETTING( 0x0a, "3000" ) - PORT_DIPSETTING( 0x02, "4000" ) - PORT_DIPSETTING( 0x0c, "5000" ) - PORT_DIPSETTING( 0x04, "6000" ) - PORT_DIPSETTING( 0x08, "7000" ) - PORT_DIPSETTING( 0x00, "8000" ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x30, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Very_Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( csilver ) - PORT_START("IN0") - PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN1") - PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) /* Listed as "Unused" in the manual */ - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) @@ -1671,57 +1698,80 @@ static INPUT_PORTS_START( csilver ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x00, "Infinite (Cheat)") + PORT_DIPSETTING( 0x00, "28 (Cheat)") PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x10, "Every 50k" ) /* table at 0xab06 - last bonus life at 850k */ + PORT_DIPSETTING( 0x00, "Every 100k" ) /* table at 0xab17 - last bonus life at 900k */ + PORT_DIPNAME( 0x20, 0x20, "After Stage 10" ) /* code at 0xab94 */ + PORT_DIPSETTING( 0x20, "Back to Stage 1" ) + PORT_DIPSETTING( 0x00, "Game Over" ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Manual states dips 6-8 are "Unused" */ - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) INPUT_PORTS_END -static INPUT_PORTS_START( garyoret ) +/* verified from M6809 code - coinage needs further checking when the MCU is available */ +static INPUT_PORTS_START( srdarwinj ) + PORT_INCLUDE(srdarwin) + + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) +INPUT_PORTS_END + + +/* verified from M6809 code */ +static INPUT_PORTS_START( cobracom ) PORT_START("IN0") PLAYER1_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* fire */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* missile */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_START("IN1") PLAYER2_JOYSTICK - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* fire */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) /* missile */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - PORT_START("I8751") /* Fake port for i8751 */ + PORT_START("IN2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* always adds 1 credit */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) /* code at 0x88b7 in 'cobracom', 0x890e in 'cobracomj' */ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) /* code at 0x889b in 'cobracom', 0x88f2 in 'cobracomj' */ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) @@ -1730,34 +1780,29 @@ static INPUT_PORTS_START( garyoret ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x03, "3" ) + PORT_DIPSETTING( 0x02, "4" ) + PORT_DIPSETTING( 0x01, "5" ) + PORT_DIPSETTING( 0x00, "99 (Cheat)") /* lose a life before getting 2nd bonus life ! */ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) ) /* table at 0xa898 (2* 2 words) in 'cobracomj', 0xa8fe in 'cobracomj' */ + PORT_DIPSETTING( 0x20, "50k and 150k" ) + PORT_DIPSETTING( 0x00, "100k and 200k" ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) /* previously "Freeze" : code at 0x8849 in 'cobracomj', 0x88a0 in 'cobracomj' */ INPUT_PORTS_END /******************************************************************************/ @@ -1962,8 +2007,14 @@ static MACHINE_START( dec8 ) state->save_item(NAME(state->m_i8751_port1)); state->save_item(NAME(state->m_i8751_return)); state->save_item(NAME(state->m_i8751_value)); + state->save_item(NAME(state->m_coinage_id)); state->save_item(NAME(state->m_coin1)); state->save_item(NAME(state->m_coin2)); + state->save_item(NAME(state->m_need1)); + state->save_item(NAME(state->m_need2)); + state->save_item(NAME(state->m_cred1)); + state->save_item(NAME(state->m_cred2)); + state->save_item(NAME(state->m_credits)); state->save_item(NAME(state->m_snd)); state->save_item(NAME(state->m_msm5205next)); state->save_item(NAME(state->m_toggle)); @@ -1980,7 +2031,9 @@ static MACHINE_RESET( dec8 ) state->m_nmi_enable = state->m_i8751_port0 = state->m_i8751_port1 = 0; state->m_i8751_return = state->m_i8751_value = 0; - state->m_coin1 = state->m_coin2 = state->m_snd = 0; + state->m_coinage_id = 0; + state->m_coin1 = state->m_coin2 = state->m_credits = state->m_snd = 0; + state->m_need1 = state->m_need2 = state->m_cred1 = state->m_cred2 = 1; state->m_msm5205next = 0; state->m_toggle = 0; @@ -1993,260 +2046,6 @@ static MACHINE_RESET( dec8 ) } -static MACHINE_CONFIG_START( cobracom, dec8_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6809, 2000000) - MCFG_CPU_PROGRAM_MAP(cobra_map) - MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) - - MCFG_CPU_ADD("audiocpu", M6502, 1500000) - MCFG_CPU_PROGRAM_MAP(dec8_s_map) - /* NMIs are caused by the main CPU */ - - MCFG_MACHINE_START(dec8) - MCFG_MACHINE_RESET(dec8) - - /* video hardware */ - MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - - MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) - deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); - MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0) - deco_bac06_device::set_gfx_region_wide(*device, 3,3,0); - - MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0) - deco_mxc06_device::set_gfx_region(*device, 1); - - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(cobracom) - - MCFG_GFXDECODE(cobracom) - MCFG_PALETTE_LENGTH(256) - - MCFG_VIDEO_START(cobracom) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ym1", YM2203, 1500000) - MCFG_SOUND_ROUTE(0, "mono", 0.53) - MCFG_SOUND_ROUTE(1, "mono", 0.53) - MCFG_SOUND_ROUTE(2, "mono", 0.53) - MCFG_SOUND_ROUTE(3, "mono", 0.50) - - MCFG_SOUND_ADD("ym2", YM3812, 3000000) - MCFG_SOUND_CONFIG(ym3812_config) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_START( ghostb, dec8_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) - MCFG_CPU_PROGRAM_MAP(meikyuh_map) - MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) - - MCFG_CPU_ADD("audiocpu", M6502, 1500000) - MCFG_CPU_PROGRAM_MAP(dec8_s_map) - /* NMIs are caused by the main CPU */ - - MCFG_CPU_ADD("mcu", I8751, 3000000*4) - MCFG_CPU_IO_MAP(dec8_mcu_io_map) - - MCFG_MACHINE_START(dec8) - MCFG_MACHINE_RESET(dec8) - - /* video hardware */ - MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - - MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) - deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); - - MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) - deco_karnovsprites_device::set_gfx_region(*device, 1); - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(ghostb) - MCFG_SCREEN_VBLANK_STATIC(dec8) - - MCFG_GFXDECODE(ghostb) - MCFG_PALETTE_LENGTH(1024) - - MCFG_PALETTE_INIT(ghostb) - MCFG_VIDEO_START(ghostb) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ym1", YM2203, 1500000) - MCFG_SOUND_ROUTE(0, "mono", 0.23) - MCFG_SOUND_ROUTE(1, "mono", 0.23) - MCFG_SOUND_ROUTE(2, "mono", 0.23) - MCFG_SOUND_ROUTE(3, "mono", 0.20) - - MCFG_SOUND_ADD("ym2", YM3812, 3000000) - MCFG_SOUND_CONFIG(ym3812_config) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_START( oscar, dec8_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_PROGRAM_MAP(oscar_map) - MCFG_CPU_VBLANK_INT("screen", oscar_interrupt) - - MCFG_CPU_ADD("sub", HD6309, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_PROGRAM_MAP(oscar_sub_map) - - MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) - MCFG_CPU_PROGRAM_MAP(oscar_s_map) - /* NMIs are caused by the main CPU */ - MCFG_QUANTUM_TIME(attotime::from_hz(2400)) /* 40 CPU slices per frame */ - - MCFG_MACHINE_START(dec8) - MCFG_MACHINE_RESET(dec8) - - /* video hardware */ - MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - - MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) - deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); - - MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0) - deco_mxc06_device::set_gfx_region(*device, 1); - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(oscar) - - MCFG_GFXDECODE(oscar) - MCFG_PALETTE_LENGTH(512) - - MCFG_VIDEO_START(oscar) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */ - MCFG_SOUND_ROUTE(0, "mono", 0.23) - MCFG_SOUND_ROUTE(1, "mono", 0.23) - MCFG_SOUND_ROUTE(2, "mono", 0.23) - MCFG_SOUND_ROUTE(3, "mono", 0.20) - - MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */ - MCFG_SOUND_CONFIG(ym3526_config) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_START( srdarwin, dec8_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6809,2000000) /* MC68A09EP */ - MCFG_CPU_PROGRAM_MAP(srdarwin_map) - MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) - - MCFG_CPU_ADD("audiocpu", M6502, 1500000) - MCFG_CPU_PROGRAM_MAP(dec8_s_map) - /* NMIs are caused by the main CPU */ - - MCFG_MACHINE_START(dec8) - MCFG_MACHINE_RESET(dec8) - - /* video hardware */ - MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(srdarwin) - - MCFG_GFXDECODE(srdarwin) - MCFG_PALETTE_LENGTH(144) - - MCFG_VIDEO_START(srdarwin) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ym1", YM2203, 1500000) - MCFG_SOUND_ROUTE(0, "mono", 0.23) - MCFG_SOUND_ROUTE(1, "mono", 0.23) - MCFG_SOUND_ROUTE(2, "mono", 0.23) - MCFG_SOUND_ROUTE(3, "mono", 0.20) - - MCFG_SOUND_ADD("ym2", YM3812, 3000000) - MCFG_SOUND_CONFIG(ym3812_config) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_START( gondo, dec8_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ - MCFG_CPU_PROGRAM_MAP(gondo_map) - MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) - - MCFG_CPU_ADD("audiocpu", M6502, 1500000) - MCFG_CPU_PROGRAM_MAP(oscar_s_map) - /* NMIs are caused by the main CPU */ - - MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz) - MCFG_CPU_IO_MAP(dec8_mcu_io_map) - - MCFG_MACHINE_START(dec8) - MCFG_MACHINE_RESET(dec8) - - /* video hardware */ - MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - - MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) - deco_karnovsprites_device::set_gfx_region(*device, 1); - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(gondo) - MCFG_SCREEN_VBLANK_STATIC(dec8) - - MCFG_GFXDECODE(gondo) - MCFG_PALETTE_LENGTH(1024) - - MCFG_VIDEO_START(gondo) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ym1", YM2203, 1500000) - MCFG_SOUND_ROUTE(0, "mono", 0.23) - MCFG_SOUND_ROUTE(1, "mono", 0.23) - MCFG_SOUND_ROUTE(2, "mono", 0.23) - MCFG_SOUND_ROUTE(3, "mono", 0.20) - - MCFG_SOUND_ADD("ym2", YM3526, 3000000) - MCFG_SOUND_CONFIG(ym3526_config) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - static MACHINE_CONFIG_START( lastmisn, dec8_state ) /* basic machine hardware */ @@ -2345,6 +2144,160 @@ static MACHINE_CONFIG_START( shackled, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( gondo, dec8_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ + MCFG_CPU_PROGRAM_MAP(gondo_map) + MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) + + MCFG_CPU_ADD("audiocpu", M6502, 1500000) + MCFG_CPU_PROGRAM_MAP(oscar_s_map) + /* NMIs are caused by the main CPU */ + + MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz) + MCFG_CPU_IO_MAP(dec8_mcu_io_map) + + MCFG_MACHINE_START(dec8) + MCFG_MACHINE_RESET(dec8) + + /* video hardware */ + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) + deco_karnovsprites_device::set_gfx_region(*device, 1); + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(58) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) + MCFG_SCREEN_UPDATE_STATIC(gondo) + MCFG_SCREEN_VBLANK_STATIC(dec8) + + MCFG_GFXDECODE(gondo) + MCFG_PALETTE_LENGTH(1024) + + MCFG_VIDEO_START(gondo) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ym1", YM2203, 1500000) + MCFG_SOUND_ROUTE(0, "mono", 0.23) + MCFG_SOUND_ROUTE(1, "mono", 0.23) + MCFG_SOUND_ROUTE(2, "mono", 0.23) + MCFG_SOUND_ROUTE(3, "mono", 0.20) + + MCFG_SOUND_ADD("ym2", YM3526, 3000000) + MCFG_SOUND_CONFIG(ym3526_config) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( garyoret, dec8_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ + MCFG_CPU_PROGRAM_MAP(garyoret_map) + MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) + + MCFG_CPU_ADD("audiocpu", M6502, 1500000) + MCFG_CPU_PROGRAM_MAP(oscar_s_map) + /* NMIs are caused by the main CPU */ + + MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz) + MCFG_CPU_IO_MAP(dec8_mcu_io_map) + + MCFG_MACHINE_START(dec8) + MCFG_MACHINE_RESET(dec8) + + /* video hardware */ + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) + deco_karnovsprites_device::set_gfx_region(*device, 1); + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(58) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) + MCFG_SCREEN_UPDATE_STATIC(garyoret) + MCFG_SCREEN_VBLANK_STATIC(dec8) + + MCFG_GFXDECODE(gondo) + MCFG_PALETTE_LENGTH(1024) + + MCFG_VIDEO_START(garyoret) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ym1", YM2203, 1500000) + MCFG_SOUND_ROUTE(0, "mono", 0.23) + MCFG_SOUND_ROUTE(1, "mono", 0.23) + MCFG_SOUND_ROUTE(2, "mono", 0.23) + MCFG_SOUND_ROUTE(3, "mono", 0.20) + + MCFG_SOUND_ADD("ym2", YM3526, 3000000) + MCFG_SOUND_CONFIG(ym3526_config) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( ghostb, dec8_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) + MCFG_CPU_PROGRAM_MAP(meikyuh_map) + MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) + + MCFG_CPU_ADD("audiocpu", M6502, 1500000) + MCFG_CPU_PROGRAM_MAP(dec8_s_map) + /* NMIs are caused by the main CPU */ + + MCFG_CPU_ADD("mcu", I8751, 3000000*4) + MCFG_CPU_IO_MAP(dec8_mcu_io_map) + + MCFG_MACHINE_START(dec8) + MCFG_MACHINE_RESET(dec8) + + /* video hardware */ + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) + deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); + + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) + deco_karnovsprites_device::set_gfx_region(*device, 1); + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(58) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) + MCFG_SCREEN_UPDATE_STATIC(ghostb) + MCFG_SCREEN_VBLANK_STATIC(dec8) + + MCFG_GFXDECODE(ghostb) + MCFG_PALETTE_LENGTH(1024) + + MCFG_PALETTE_INIT(ghostb) + MCFG_VIDEO_START(ghostb) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ym1", YM2203, 1500000) + MCFG_SOUND_ROUTE(0, "mono", 0.23) + MCFG_SOUND_ROUTE(1, "mono", 0.23) + MCFG_SOUND_ROUTE(2, "mono", 0.23) + MCFG_SOUND_ROUTE(3, "mono", 0.20) + + MCFG_SOUND_ADD("ym2", YM3812, 3000000) + MCFG_SOUND_CONFIG(ym3812_config) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( csilver, dec8_state ) /* basic machine hardware */ @@ -2399,15 +2352,68 @@ static MACHINE_CONFIG_START( csilver, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.88) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( garyoret, dec8_state ) +static MACHINE_CONFIG_START( oscar, dec8_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ - MCFG_CPU_PROGRAM_MAP(garyoret_map) - MCFG_CPU_VBLANK_INT("screen", gondo_interrupt) + MCFG_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */ + MCFG_CPU_PROGRAM_MAP(oscar_map) + MCFG_CPU_VBLANK_INT("screen", oscar_interrupt) + + MCFG_CPU_ADD("sub", HD6309, XTAL_12MHz/2) /* verified on pcb */ + MCFG_CPU_PROGRAM_MAP(oscar_sub_map) + + MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) + MCFG_CPU_PROGRAM_MAP(oscar_s_map) + /* NMIs are caused by the main CPU */ + MCFG_QUANTUM_TIME(attotime::from_hz(2400)) /* 40 CPU slices per frame */ + + MCFG_MACHINE_START(dec8) + MCFG_MACHINE_RESET(dec8) + + /* video hardware */ + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) + deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); + + MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0) + deco_mxc06_device::set_gfx_region(*device, 1); + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(58) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) + MCFG_SCREEN_UPDATE_STATIC(oscar) + + MCFG_GFXDECODE(oscar) + MCFG_PALETTE_LENGTH(512) + + MCFG_VIDEO_START(oscar) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */ + MCFG_SOUND_ROUTE(0, "mono", 0.23) + MCFG_SOUND_ROUTE(1, "mono", 0.23) + MCFG_SOUND_ROUTE(2, "mono", 0.23) + MCFG_SOUND_ROUTE(3, "mono", 0.20) + + MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */ + MCFG_SOUND_CONFIG(ym3526_config) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( srdarwin, dec8_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M6809,2000000) /* MC68A09EP */ + MCFG_CPU_PROGRAM_MAP(srdarwin_map) + MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) MCFG_CPU_ADD("audiocpu", M6502, 1500000) - MCFG_CPU_PROGRAM_MAP(oscar_s_map) + MCFG_CPU_PROGRAM_MAP(dec8_s_map) /* NMIs are caused by the main CPU */ MCFG_MACHINE_START(dec8) @@ -2416,21 +2422,17 @@ static MACHINE_CONFIG_START( garyoret, dec8_state ) /* video hardware */ MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") - MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) - deco_karnovsprites_device::set_gfx_region(*device, 1); - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_STATIC(garyoret) - MCFG_SCREEN_VBLANK_STATIC(dec8) + MCFG_SCREEN_UPDATE_STATIC(srdarwin) - MCFG_GFXDECODE(gondo) - MCFG_PALETTE_LENGTH(1024) + MCFG_GFXDECODE(srdarwin) + MCFG_PALETTE_LENGTH(144) - MCFG_VIDEO_START(garyoret) + MCFG_VIDEO_START(srdarwin) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -2441,73 +2443,387 @@ static MACHINE_CONFIG_START( garyoret, dec8_state ) MCFG_SOUND_ROUTE(2, "mono", 0.23) MCFG_SOUND_ROUTE(3, "mono", 0.20) - MCFG_SOUND_ADD("ym2", YM3526, 3000000) - MCFG_SOUND_CONFIG(ym3526_config) + MCFG_SOUND_ADD("ym2", YM3812, 3000000) + MCFG_SOUND_CONFIG(ym3812_config) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( cobracom, dec8_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M6809, 2000000) + MCFG_CPU_PROGRAM_MAP(cobra_map) + MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) + + MCFG_CPU_ADD("audiocpu", M6502, 1500000) + MCFG_CPU_PROGRAM_MAP(dec8_s_map) + /* NMIs are caused by the main CPU */ + + MCFG_MACHINE_START(dec8) + MCFG_MACHINE_RESET(dec8) + + /* video hardware */ + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) + deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); + MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0) + deco_bac06_device::set_gfx_region_wide(*device, 3,3,0); + + MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0) + deco_mxc06_device::set_gfx_region(*device, 1); + + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(58) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) + MCFG_SCREEN_UPDATE_STATIC(cobracom) + + MCFG_GFXDECODE(cobracom) + MCFG_PALETTE_LENGTH(256) + + MCFG_VIDEO_START(cobracom) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ym1", YM2203, 1500000) + MCFG_SOUND_ROUTE(0, "mono", 0.53) + MCFG_SOUND_ROUTE(1, "mono", 0.53) + MCFG_SOUND_ROUTE(2, "mono", 0.53) + MCFG_SOUND_ROUTE(3, "mono", 0.50) + + MCFG_SOUND_ADD("ym2", YM3812, 3000000) + MCFG_SOUND_CONFIG(ym3812_config) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END /******************************************************************************/ -ROM_START( cobracom ) - ROM_REGION( 0x30000, "maincpu", 0 ) - ROM_LOAD( "el11-5.bin", 0x08000, 0x08000, CRC(af0a8b05) SHA1(096e4e7f2785a20bfaec14277413ce4e20e90214) ) - ROM_LOAD( "el12-4.bin", 0x10000, 0x10000, CRC(7a44ef38) SHA1(d7dc277dce08f9d073290e100be4a7ca2e2b82cb) ) - ROM_LOAD( "el13.bin", 0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) ) +ROM_START( lastmisn ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "dl03-6.13h", 0x08000, 0x08000, CRC(47751a5e) SHA1(190970a6eb849781e8853f2bed7b34ac44e569ca) ) /* Rev 6 roms */ + ROM_LOAD( "lm_dl04.7h", 0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "el10-4.bin", 0x8000, 0x8000, CRC(edfad118) SHA1(10de8805472346fead62460a3fdc09ae26a4e0d5) ) + ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "el14.bin", 0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "el00-4.bin", 0x00000, 0x10000, CRC(122da2a8) SHA1(ce72f16abf7e5449c7d044d4b827e8735c3be0ff) ) - ROM_LOAD( "el01-4.bin", 0x20000, 0x10000, CRC(27bf705b) SHA1(196c35aaf3816d3eef4c2af6d146a90a48365d33) ) - ROM_LOAD( "el02-4.bin", 0x40000, 0x10000, CRC(c86fede6) SHA1(97584fa19591651fcfb39d1b2b6306165e93554c) ) - ROM_LOAD( "el03-4.bin", 0x60000, 0x10000, CRC(1d8a855b) SHA1(429261c200dddc62a330be8aea150b2037133188) ) - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles 1 */ - ROM_LOAD( "el05.bin", 0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) ) - ROM_LOAD( "el06.bin", 0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) ) - ROM_LOAD( "el04.bin", 0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) ) - ROM_LOAD( "el07.bin", 0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) ) - - ROM_REGION( 0x80000, "gfx4", 0 ) /* tiles 2 */ - ROM_LOAD( "el08.bin", 0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) ) - ROM_CONTINUE( 0x40000, 0x08000 ) - ROM_LOAD( "el09.bin", 0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) ) - ROM_CONTINUE( 0x60000, 0x08000 ) -ROM_END - -ROM_START( cobracomj ) - ROM_REGION( 0x30000, "maincpu", 0 ) - ROM_LOAD( "eh-11.rom", 0x08000, 0x08000, CRC(868637e1) SHA1(8b1e3e045e341bb94b1f6c7d89198b22e6c19de7) ) - ROM_LOAD( "eh-12.rom", 0x10000, 0x10000, CRC(7c878a83) SHA1(9b2a3083c6dae69626fdab16d97517d30eaa1859) ) - ROM_LOAD( "el13.bin", 0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "eh-10.rom", 0x8000, 0x8000, CRC(62ca5e89) SHA1(b04acaccc58846e0d277868a873a440b7f8071b0) ) + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "el14.bin", 0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) ) + ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) + ROM_CONTINUE( 0x06000, 0x2000 ) + ROM_CONTINUE( 0x04000, 0x2000 ) + ROM_CONTINUE( 0x02000, 0x2000 ) ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "eh-00.rom", 0x00000, 0x10000, CRC(d96b6797) SHA1(01c4a9f2bebb13cba14636690cd5356db73f045e) ) - ROM_LOAD( "eh-01.rom", 0x20000, 0x10000, CRC(3fef9c02) SHA1(e4b731faf6a2f4e5fed8ba9bd07e0f203981ffec) ) - ROM_LOAD( "eh-02.rom", 0x40000, 0x10000, CRC(bfae6c34) SHA1(9503a120e11e9466cd9a2931fd44a631d72ca5f0) ) - ROM_LOAD( "eh-03.rom", 0x60000, 0x10000, CRC(d56790f8) SHA1(1cc7cb9f7102158de14a737e9317a54f01790ba8) ) + ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) + ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) + ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) + ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles 1 */ - ROM_LOAD( "el05.bin", 0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) ) - ROM_LOAD( "el06.bin", 0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) ) - ROM_LOAD( "el04.bin", 0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) ) - ROM_LOAD( "el07.bin", 0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) ) + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) + ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) + ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) + ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) - ROM_REGION( 0x80000, "gfx4", 0 ) /* tiles 2 */ - ROM_LOAD( "el08.bin", 0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) ) - ROM_CONTINUE( 0x40000, 0x08000 ) - ROM_LOAD( "el09.bin", 0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) ) - ROM_CONTINUE( 0x60000, 0x08000 ) + ROM_REGION( 256, "proms", 0 ) + ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ +ROM_END + +ROM_START( lastmisno ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "lm_dl03.13h", 0x08000, 0x08000, CRC(357f5f6b) SHA1(a114aac50db62a6bcb943681e517ad7c88ec47f4) ) /* Rev 5 roms */ + ROM_LOAD( "lm_dl04.7h", 0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) + ROM_CONTINUE( 0x06000, 0x2000 ) + ROM_CONTINUE( 0x04000, 0x2000 ) + ROM_CONTINUE( 0x02000, 0x2000 ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) + ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) + ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) + ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) + ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) + ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) + ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) + + ROM_REGION( 256, "proms", 0 ) + ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ +ROM_END + +ROM_START( lastmisnj ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "dl03-.13h", 0x08000, 0x08000, CRC(4be5e7e1) SHA1(9f943658663da31947cebdcbcb5f4e2be0714c06) ) + ROM_LOAD( "dl04-.7h", 0x10000, 0x10000, CRC(f026adf9) SHA1(4ccd0e714a6eb7cee388c93beee2d5510407c961) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "dl02-.18h", 0x0000, 0x10000, CRC(d0de2b5d) SHA1(e0bb34c2a2ef6fc6f05ab9a98bd23a39004c0c05) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) + ROM_CONTINUE( 0x06000, 0x2000 ) + ROM_CONTINUE( 0x04000, 0x2000 ) + ROM_CONTINUE( 0x02000, 0x2000 ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) + ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) + ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) + ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) + ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) + ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) + ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) + + ROM_REGION( 256, "proms", 0 ) + ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ +ROM_END + +ROM_START( shackled ) + ROM_REGION( 0x48000, "maincpu", 0 ) + ROM_LOAD( "dk-02.rom", 0x08000, 0x08000, CRC(87f8fa85) SHA1(1cb93a60eefdb453a3cc6ec9c5cc2e367fb8aeb0) ) + ROM_LOAD( "dk-06.rom", 0x10000, 0x10000, CRC(69ad62d1) SHA1(1aa23b12ab4f1908cddd25f091e1f9bd70a5113c) ) + ROM_LOAD( "dk-05.rom", 0x20000, 0x10000, CRC(598dd128) SHA1(10843c5352eef03c8675df6abaf23c9c9c795aa3) ) + ROM_LOAD( "dk-04.rom", 0x30000, 0x10000, CRC(36d305d4) SHA1(17586c316aff405cf20c1467d69c98fa2a3c2630) ) + ROM_LOAD( "dk-03.rom", 0x40000, 0x08000, CRC(6fd90fd1) SHA1(2f8db17e5545c82d243a7e23e7bda2c2a9101360) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "dk-01.rom", 0x00000, 0x10000, CRC(71fe3bda) SHA1(959cce01362b2c670c2e15b03a78a1ff9cea4ee9) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "dk-07.rom", 0x08000, 0x08000, CRC(887e4bcc) SHA1(6427396080e9cd8647adff47c8ed04593a14268c) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dk-00.rom", 0x00000, 0x08000, CRC(69b975aa) SHA1(38cb96768c79ff1aa1b4b190e08ec9155baf698a) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dk-12.rom", 0x00000, 0x10000, CRC(615c2371) SHA1(30b25dc27d34646d886a465c77622eaa894d83c3) ) + ROM_LOAD( "dk-13.rom", 0x10000, 0x10000, CRC(479aa503) SHA1(1167f0d15439c95a1094f81855203e863ce0488d) ) + ROM_LOAD( "dk-14.rom", 0x20000, 0x10000, CRC(cdc24246) SHA1(1a4189bc2b1fa99740dd7921608159936ba3bd07) ) + ROM_LOAD( "dk-15.rom", 0x30000, 0x10000, CRC(88db811b) SHA1(7d3c4a80925f323efb589798b4a341d1a2ca95f9) ) + ROM_LOAD( "dk-16.rom", 0x40000, 0x10000, CRC(061a76bd) SHA1(5bcb513e48bed9b7c4207d94531be691a85e295d) ) + ROM_LOAD( "dk-17.rom", 0x50000, 0x10000, CRC(a6c5d8af) SHA1(58f3fece9a5ef8b39090a2f39610381b8e7cdbf7) ) + ROM_LOAD( "dk-18.rom", 0x60000, 0x10000, CRC(4d466757) SHA1(701d79bebbba4f266e19080d16ff2f93ffa94287) ) + ROM_LOAD( "dk-19.rom", 0x70000, 0x10000, CRC(1911e83e) SHA1(174e9db3f2211ecbbb93c6bda8f6185dbfdbc818) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dk-11.rom", 0x00000, 0x10000, CRC(5cf5719f) SHA1(8c7582ac19010421ec748391a193aa18e51b981f) ) + ROM_LOAD( "dk-10.rom", 0x20000, 0x10000, CRC(408e6d08) SHA1(28cb76792e5f84bd101a91cb82597a5939804f84) ) + ROM_LOAD( "dk-09.rom", 0x40000, 0x10000, CRC(c1557fac) SHA1(7d39ec793113a48baf45c2ea07abb07e2e48985a) ) + ROM_LOAD( "dk-08.rom", 0x60000, 0x10000, CRC(5e54e9f5) SHA1(1ab41a3bde1f2c2be670e89cf402be28001c17d1) ) +ROM_END + +ROM_START( breywood ) + ROM_REGION( 0x48000, "maincpu", 0 ) + ROM_LOAD( "7.bin", 0x08000, 0x08000, CRC(c19856b9) SHA1(766994703bb59879c311675353d7231ad27c7c16) ) + ROM_LOAD( "3.bin", 0x10000, 0x10000, CRC(2860ea02) SHA1(7ac090c3ae9d71baa6227ec9555f1c9f2d25ea0d) ) + ROM_LOAD( "4.bin", 0x20000, 0x10000, CRC(0fdd915e) SHA1(262df956dfc727c710ade28af7f33fddaafd7ee2) ) + ROM_LOAD( "5.bin", 0x30000, 0x10000, CRC(71036579) SHA1(c58ff3222b5bcd75d58c5f282554e92103e80916) ) + ROM_LOAD( "6.bin", 0x40000, 0x08000, CRC(308f4893) SHA1(539c138ff01c5718cc8a982482b989468d532699) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "8.bin", 0x0000, 0x10000, CRC(3d9fb623) SHA1(6e5eaad9bb0a432e2da5da5b18a2ed36617bdde2) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "2.bin", 0x8000, 0x8000, CRC(4a471c38) SHA1(963ed7b6afeefdfc2cf0d65b0998f973330e6495) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "1.bin", 0x00000, 0x08000, CRC(815a891a) SHA1(e557d6a35821a8589d9e3df0f42131b58b08c8ca) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "20.bin", 0x00000, 0x10000, CRC(2b7634f2) SHA1(56d963d4960d9b3e888c8107340763e176adfa9b) ) + ROM_LOAD( "19.bin", 0x10000, 0x10000, CRC(4530a952) SHA1(99251a21347815cba465669e18df31262bcdaba1) ) + ROM_LOAD( "18.bin", 0x20000, 0x10000, CRC(87c28833) SHA1(3f1a294065326389d304e540bc880844c6c7cb06) ) + ROM_LOAD( "17.bin", 0x30000, 0x10000, CRC(bfb43a4d) SHA1(56092935147a3b643a9b39eb7cfc067a764644c5) ) + ROM_LOAD( "16.bin", 0x40000, 0x10000, CRC(f9848cc4) SHA1(6d8e77b67ce4d418defba6f6979632f31d2307c6) ) + ROM_LOAD( "15.bin", 0x50000, 0x10000, CRC(baa3d218) SHA1(3c31df23cc871cffd9a4dafae106e4a98f5af848) ) + ROM_LOAD( "14.bin", 0x60000, 0x10000, CRC(12afe533) SHA1(6df3471c16a714d118717da549a7523aa388ddd3) ) + ROM_LOAD( "13.bin", 0x70000, 0x10000, CRC(03373755) SHA1(d2541dd957803168f246d96b7cd74eae7fd43188) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "9.bin", 0x00000, 0x10000, CRC(067e2a43) SHA1(f1da7455aab21f94ed25a93b0ebfde69baa475d1) ) + ROM_LOAD( "10.bin", 0x20000, 0x10000, CRC(c19733aa) SHA1(3dfcfd33c5c4f792bb941ac933301c03ddd72b03) ) + ROM_LOAD( "11.bin", 0x40000, 0x10000, CRC(e37d5dbe) SHA1(ff79b4f6d8b0a3061e78d15480df0155650f347f) ) + ROM_LOAD( "12.bin", 0x60000, 0x10000, CRC(beee880f) SHA1(9a818a75cbec425a13f629bda6d50aa341aa1896) ) +ROM_END + +ROM_START( gondo ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD( "dt-00.256", 0x08000, 0x08000, CRC(a8cf9118) SHA1(865744c9866957d686a31608d356e279fe58934e) ) + ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) ) + ROM_LOAD( "dt-02.512", 0x20000, 0x10000, CRC(bb5e674b) SHA1(8057dc7464a8b6987536f248d607957923b223cf) ) + ROM_LOAD( "dt-03.512", 0x30000, 0x10000, CRC(99c32b13) SHA1(3d79f48e7d198cb2e519d592a89eda505044bce5) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "dt-05.256", 0x8000, 0x8000, CRC(ec08aa29) SHA1(ce83974ae095d9518d1ebf9f7e712f0cbc2c1b42) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "dt-a.1b", 0x0000, 0x1000, CRC(03abceeb) SHA1(a16b779d7cea1c1437f85fa6b6e08894a46a5674) ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dt-14.256", 0x00000, 0x08000, CRC(4bef16e1) SHA1(b8157a7a1b8f36cea1fd353267a4e03d920cb4aa) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) ) + ROM_LOAD( "dt-20.256", 0x10000, 0x08000, CRC(42d01002) SHA1(5a289ffdc83c05f21908a5d0b6247da5b51c1ddd) ) + ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) ) + ROM_LOAD( "dt-18.256", 0x30000, 0x08000, CRC(c0c5df1c) SHA1(5b0f71f590434cdd0545ce098666798927727469) ) + ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) ) + ROM_LOAD( "dt-17.256", 0x50000, 0x08000, CRC(3bbcff0d) SHA1(a8f7aa56ff49ed6b29240c3504d6c9945944953b) ) + ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) ) + ROM_LOAD( "dt-22.256", 0x70000, 0x08000, CRC(c1876a5f) SHA1(66122ce765723765e20036bd4d461a210c8b94d3) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) ) + ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) ) + ROM_CONTINUE( 0x30000, 0x08000 ) + ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) ) + ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) ) + ROM_CONTINUE( 0x50000, 0x08000 ) + ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) ) + ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) ) + ROM_CONTINUE( 0x70000, 0x08000 ) + ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) ) + + ROM_REGION( 1024, "proms", 0 ) + ROM_LOAD( "mb7122e.10b", 0x00000, 0x400, CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) ) /* Priority (Not yet used) */ +ROM_END + +ROM_START( makyosen ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD( "ds00", 0x08000, 0x08000, CRC(33bb16fe) SHA1(5d3873b66e0d08b35d56a8b508c774b27368a100) ) + ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) ) + ROM_LOAD( "ds02", 0x20000, 0x10000, CRC(925307a4) SHA1(1e8b8eb21df1a11b14c981b343b34c6cc3676517) ) + ROM_LOAD( "ds03", 0x30000, 0x10000, CRC(9c0fcbf6) SHA1(bfe42b5277fea111840a9f59b2cb8dfe44444029) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "ds05", 0x8000, 0x8000, CRC(e6e28ca9) SHA1(3b1f8219331db1910bfb428f8964f8fc1063df6f) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU based on 'gondo' one */ + ROM_LOAD( "ds-a.1b", 0x0000, 0x1000, BAD_DUMP CRC(f61b77cf) SHA1(2d3549876ea08623ce9da1d637853cb4c740300a)) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "ds14", 0x00000, 0x08000, CRC(00cbe9c8) SHA1(de7b640de8fd54ee79194945c96d5768d09f483b) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) ) + ROM_LOAD( "ds20", 0x10000, 0x08000, CRC(0eef7f56) SHA1(05c23aa6a598478cd4822634cff96055c585e9d2) ) + ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) ) + ROM_LOAD( "ds18", 0x30000, 0x08000, CRC(2b2d1468) SHA1(a144ac1b367e1fec876156230e9ab1c99416962e) ) + ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) ) + ROM_LOAD( "ds17", 0x50000, 0x08000, CRC(75ae349a) SHA1(15755a28925d5ed37fab4bd988716fcc5d20c290) ) + ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) ) + ROM_LOAD( "ds22", 0x70000, 0x08000, CRC(c8ffb148) SHA1(ae1a8b3cd1f5e423dc1a3c7d05f9fe7c689432e3) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) ) + ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) ) + ROM_CONTINUE( 0x30000, 0x08000 ) + ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) ) + ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) ) + ROM_CONTINUE( 0x50000, 0x08000 ) + ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) ) + ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) ) + ROM_CONTINUE( 0x70000, 0x08000 ) + ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) ) + + ROM_REGION( 1024, "proms", 0 ) + ROM_LOAD( "mb7122e.10b", 0x00000, 0x400, CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) ) /* Priority (Not yet used) */ + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "pal16r4nc.10u", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r4nc.11g", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r4nc.1s", 0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */ +ROM_END + +ROM_START( garyoret ) + ROM_REGION( 0x50000, "maincpu", 0 ) + ROM_LOAD( "dv00", 0x08000, 0x08000, CRC(cceaaf05) SHA1(b8f54638feab77d023e01ced947e1269f0d19fd8) ) + ROM_LOAD( "dv01", 0x10000, 0x10000, CRC(c33fc18a) SHA1(0d9594b0e6c39aea5b9f15f6aa364b31604f1066) ) + ROM_LOAD( "dv02", 0x20000, 0x10000, CRC(f9e26ce7) SHA1(8589594ebc7ae16942739382273a222dfa30b3b7) ) + ROM_LOAD( "dv03", 0x30000, 0x10000, CRC(55d8d699) SHA1(da1519cd54d27cc406420ce0845e43f7228cfd4e) ) + ROM_LOAD( "dv04", 0x40000, 0x10000, CRC(ed3d00ee) SHA1(6daa2ee509235ad03d3012a00382820279add620) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "dv05", 0x08000, 0x08000, CRC(c97c347f) SHA1(a1b22733dc15d524af97db3e608a82503a49b182) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU based on 'gondo' one */ + ROM_LOAD( "dv__.mcu", 0x0000, 0x1000, BAD_DUMP CRC(37cacec6) SHA1(d81fe36939ccac784a83a69dfc6898b22a4515ec) ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dv14", 0x00000, 0x08000, CRC(fb2bc581) SHA1(d597976c5ae586166c49051cc3de8cf0c2e5a5e1) ) /* Characters */ + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dv22", 0x00000, 0x10000, CRC(cef0367e) SHA1(8beb3a6b91ec0a6ec052243c8f626a581d349f65) ) + ROM_LOAD( "dv21", 0x10000, 0x08000, CRC(90042fb7) SHA1(f19bbf158c92030e8fddb5087b5b69b71956baf8) ) + ROM_LOAD( "dv20", 0x20000, 0x10000, CRC(451a2d8c) SHA1(f4eea444b797d394edeb514ddc1c494fd7ccc2f2) ) + ROM_LOAD( "dv19", 0x30000, 0x08000, CRC(14e1475b) SHA1(f0aec5b7b4be0da06a73ed382e7e851654e47e47) ) + ROM_LOAD( "dv18", 0x40000, 0x10000, CRC(7043bead) SHA1(5d1be8b9cd56ae43d60406b05258d20de980096d) ) + ROM_LOAD( "dv17", 0x50000, 0x08000, CRC(28f449d7) SHA1(cf1bc690b67910c42ad09531ab1d88461d00b944) ) + ROM_LOAD( "dv16", 0x60000, 0x10000, CRC(37e4971e) SHA1(9442c315b7cdbcc046d9e6838cb793c1857174ed) ) + ROM_LOAD( "dv15", 0x70000, 0x08000, CRC(ca41b6ac) SHA1(d7a9ef6c89741c1e8e17a668a9d39ea089f5c73f) ) + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dv08", 0x00000, 0x08000, CRC(89c13e15) SHA1(6507e60de5cd78a5b46090e4825a44c2a23631d7) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + ROM_LOAD( "dv09", 0x08000, 0x08000, CRC(6a345a23) SHA1(b86f81b9fe25acd833ca3e2cff6cfa853c02280a) ) + ROM_CONTINUE( 0x18000, 0x08000 ) + + ROM_LOAD( "dv06", 0x20000, 0x08000, CRC(1eb52a20) SHA1(46670ed973f794be9c2c7e6bf5d97db51211e9a9) ) + ROM_CONTINUE( 0x30000, 0x08000 ) + ROM_LOAD( "dv07", 0x28000, 0x08000, CRC(e7346ef8) SHA1(8083a7a182e8ed904daf2f692115d01b3d0830eb) ) + ROM_CONTINUE( 0x38000, 0x08000 ) + + ROM_LOAD( "dv12", 0x40000, 0x08000, CRC(46ba5af4) SHA1(a1c13e7e3c85060202120b64e3cee32c1f733270) ) + ROM_CONTINUE( 0x50000, 0x08000 ) + ROM_LOAD( "dv13", 0x48000, 0x08000, CRC(a7af6dfd) SHA1(fa41bdafb64c79bd9769903fd37d4d5172b66a52) ) + ROM_CONTINUE( 0x58000, 0x08000 ) + + ROM_LOAD( "dv10", 0x60000, 0x08000, CRC(68b6d75c) SHA1(ac719ef6b30ac9e63fab13cb359e6114493f274d) ) + ROM_CONTINUE( 0x70000, 0x08000 ) + ROM_LOAD( "dv11", 0x68000, 0x08000, CRC(b5948aee) SHA1(587afbfeda985bede9e4b5f57dad6763f4294962) ) + ROM_CONTINUE( 0x78000, 0x08000 ) ROM_END ROM_START( ghostb ) @@ -2521,7 +2837,7 @@ ROM_START( ghostb ) ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) ) - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU */ ROM_LOAD( "dz-1.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) ) /* Verfied label, but is it different the other DZ */ ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ @@ -2559,7 +2875,7 @@ ROM_START( ghostb2a ) ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) ) - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU */ ROM_LOAD( "dz.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ @@ -2597,7 +2913,7 @@ ROM_START( ghostb3 ) ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) ) - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU */ ROM_LOAD( "dz.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ @@ -2842,171 +3158,126 @@ ROM_START( meikyuha ) ROM_LOAD( "dw19.10d", 0x0400, 0x0400, CRC(cc16f3fa) SHA1(4562106ff752f5fc5ae00ff098141e5d74fe4700) ) ROM_END -ROM_START( srdarwin ) - ROM_REGION( 0x28000, "maincpu", 0 ) - ROM_LOAD( "dy01-e.b14", 0x20000, 0x08000, CRC(176e9299) SHA1(20cd44ab610e384ab4f0172054c9adc432b12e9c) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) ) +/* +Main Compoennts +--------------- - ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ - ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) ) +Top board (DATA EAST DE-0250-3): +2x MC68B09EP (18e,19e)(main) +1x RP65C02A (3f)(sound) +1x YM3812 (1e)(sound) +1x YM2203 (1f)(sound) +2x Y30148 (1j,2j)(sound) +1x OKI M5205 (3j)(sound) +1x NEC PC3403C (1j)(sound) +1x C4558C (2j)(sound) +1x oscillator 8.000 (x1) +1x ID8751H (read protected) + +Lower board (DATA EAST DE-0251-2): +1x DECO TC15G032AY-0013-8644a-DSPC10 (square component, with 135 pass-through pins)(14h) +1x DECO VSC30-M60348-6102 (DIL40)(9a) +1x DECO HMC20-M60232-6902 (DIL28)(14a) +1x oscillator 12.000 (x1) + +ROMs +---- + +Top board (DATA EAST DE-0250-3): +2x MBM27256 (00,03) +10x MBM27C512 (01,02,04,05,06,07,08,09,10,11) +1x MB7122 (DIL18) (15) + +Lower board (DATA EAST DE-0251-2): +3x MBM27C512 + +Notes +----- + +Top board (DATA EAST DE-0250-3): +1x JAMMA edge connector +2x 25x2 legs connectors to lower board (cn1,cn2) +1x trimmer (volume) +2x 8 switches dip (7k,16k) + +Lower board (DATA EAST DE-0251-2): +2x 25x2 legs connectors to top board (cn1,cn2) + +*/ + +ROM_START( csilver ) + ROM_REGION( 0x48000, "maincpu", 0 ) + ROM_LOAD( "dx03-12.18d", 0x08000, 0x08000, CRC(2d926e7c) SHA1(cf38e92904edb1870b0a4965f9049d67efe8cf6a) ) + ROM_LOAD( "dx01.12d", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) ) + ROM_LOAD( "dx02.13d", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "dx05.3f", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) ) + ROM_CONTINUE( 0x08000, 0x08000 ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) // dx-8.19a ? + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dx00.3d", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ + ROM_LOAD( "dx14.15k", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) + /* 0x10000-0x1ffff empy */ + ROM_LOAD( "dx13.13k", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) + /* 0x30000-0x3ffff empy */ + ROM_LOAD( "dx12.10k", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) + /* 0x50000-0x5ffff empy */ + /* 0x60000-0x7ffff empy (no 4th plane) */ + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ + ROM_LOAD( "dx06.5f", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) + ROM_LOAD( "dx07.7f", 0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) ) + ROM_LOAD( "dx08.8f", 0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) ) + ROM_LOAD( "dx09.10f", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) ) + ROM_LOAD( "dx10.12f", 0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) ) + ROM_LOAD( "dx11.13f", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) +ROM_END + +/* Different IC positions to World set? */ +ROM_START( csilverj ) + ROM_REGION( 0x48000, "maincpu", 0 ) + ROM_LOAD( "dx03-3.a4", 0x08000, 0x08000, CRC(02dd8cfc) SHA1(f29c0d9dd03e8c52672c0f3dbee44a93c5b4261d) ) + ROM_LOAD( "dx01.a2", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) ) + ROM_LOAD( "dx02.a3", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "dx04-1.a5", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "dx05.a6", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) ) + ROM_CONTINUE( 0x08000, 0x08000 ) ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) ) + ROM_LOAD( "dx00.a1", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) ) - ROM_REGION( 0x30000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) ) - ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) ) - ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) ) - ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) ) - ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) ) - ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) ) + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ + ROM_LOAD( "dx14.b5", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) + /* 0x10000-0x1ffff empy */ + ROM_LOAD( "dx13.b4", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) + /* 0x30000-0x3ffff empy */ + ROM_LOAD( "dx12.b3", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) + /* 0x50000-0x5ffff empy */ + /* 0x60000-0x7ffff empy (no 4th plane) */ - ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dy03.b4", 0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) ) - ROM_CONTINUE( 0x10000, 0x4000 ) - ROM_CONTINUE( 0x20000, 0x4000 ) - ROM_CONTINUE( 0x30000, 0x4000 ) - ROM_LOAD( "dy02.b5", 0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) ) - ROM_CONTINUE( 0x18000, 0x4000 ) - ROM_CONTINUE( 0x28000, 0x4000 ) - ROM_CONTINUE( 0x38000, 0x4000 ) - - ROM_REGION( 256, "proms", 0 ) - ROM_LOAD( "dy12.f4", 0x00000, 0x100, CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) ) /* Priority (Not yet used) */ -ROM_END - -ROM_START( srdarwinj ) - ROM_REGION( 0x28000, "maincpu", 0 ) - ROM_LOAD( "dy_01.rom", 0x20000, 0x08000, CRC(1eeee4ff) SHA1(89a70de8bd61c671582b11773ce69b2edcd9c2f8) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) ) - - ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ - ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) ) - - ROM_REGION( 0x30000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) ) - ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) ) - ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) ) - ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) ) - ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) ) - ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) ) - - ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dy03.b4", 0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) ) - ROM_CONTINUE( 0x10000, 0x4000 ) - ROM_CONTINUE( 0x20000, 0x4000 ) - ROM_CONTINUE( 0x30000, 0x4000 ) - ROM_LOAD( "dy02.b5", 0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) ) - ROM_CONTINUE( 0x18000, 0x4000 ) - ROM_CONTINUE( 0x28000, 0x4000 ) - ROM_CONTINUE( 0x38000, 0x4000 ) - - ROM_REGION( 256, "proms", 0 ) - ROM_LOAD( "dy12.f4", 0x00000, 0x100, CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) ) /* Priority (Not yet used) */ -ROM_END - -ROM_START( gondo ) - ROM_REGION( 0x40000, "maincpu", 0 ) - ROM_LOAD( "dt-00.256", 0x08000, 0x08000, CRC(a8cf9118) SHA1(865744c9866957d686a31608d356e279fe58934e) ) - ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) ) - ROM_LOAD( "dt-02.512", 0x20000, 0x10000, CRC(bb5e674b) SHA1(8057dc7464a8b6987536f248d607957923b223cf) ) - ROM_LOAD( "dt-03.512", 0x30000, 0x10000, CRC(99c32b13) SHA1(3d79f48e7d198cb2e519d592a89eda505044bce5) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dt-05.256", 0x8000, 0x8000, CRC(ec08aa29) SHA1(ce83974ae095d9518d1ebf9f7e712f0cbc2c1b42) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "dt-a.1b", 0x0000, 0x1000, CRC(03abceeb) SHA1(a16b779d7cea1c1437f85fa6b6e08894a46a5674) ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dt-14.256", 0x00000, 0x08000, CRC(4bef16e1) SHA1(b8157a7a1b8f36cea1fd353267a4e03d920cb4aa) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) ) - ROM_LOAD( "dt-20.256", 0x10000, 0x08000, CRC(42d01002) SHA1(5a289ffdc83c05f21908a5d0b6247da5b51c1ddd) ) - ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) ) - ROM_LOAD( "dt-18.256", 0x30000, 0x08000, CRC(c0c5df1c) SHA1(5b0f71f590434cdd0545ce098666798927727469) ) - ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) ) - ROM_LOAD( "dt-17.256", 0x50000, 0x08000, CRC(3bbcff0d) SHA1(a8f7aa56ff49ed6b29240c3504d6c9945944953b) ) - ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) ) - ROM_LOAD( "dt-22.256", 0x70000, 0x08000, CRC(c1876a5f) SHA1(66122ce765723765e20036bd4d461a210c8b94d3) ) - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) ) - ROM_CONTINUE( 0x10000, 0x08000 ) - ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) ) - ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) ) - ROM_CONTINUE( 0x30000, 0x08000 ) - ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) ) - ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) ) - ROM_CONTINUE( 0x50000, 0x08000 ) - ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) ) - ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) ) - ROM_CONTINUE( 0x70000, 0x08000 ) - ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) ) - - ROM_REGION( 1024, "proms", 0 ) - ROM_LOAD( "mb7122e.10b", 0x00000, 0x400, CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) ) /* Priority (Not yet used) */ -ROM_END - -ROM_START( makyosen ) - ROM_REGION( 0x40000, "maincpu", 0 ) - ROM_LOAD( "ds00", 0x08000, 0x08000, CRC(33bb16fe) SHA1(5d3873b66e0d08b35d56a8b508c774b27368a100) ) - ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) ) - ROM_LOAD( "ds02", 0x20000, 0x10000, CRC(925307a4) SHA1(1e8b8eb21df1a11b14c981b343b34c6cc3676517) ) - ROM_LOAD( "ds03", 0x30000, 0x10000, CRC(9c0fcbf6) SHA1(bfe42b5277fea111840a9f59b2cb8dfe44444029) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "ds05", 0x8000, 0x8000, CRC(e6e28ca9) SHA1(3b1f8219331db1910bfb428f8964f8fc1063df6f) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "ds-a.1b", 0x0000, 0x1000, BAD_DUMP CRC(8bb25edc) SHA1(7073b06747e55e4ac5b60b68a64ffbc7e18cb593) ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "ds14", 0x00000, 0x08000, CRC(00cbe9c8) SHA1(de7b640de8fd54ee79194945c96d5768d09f483b) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) ) - ROM_LOAD( "ds20", 0x10000, 0x08000, CRC(0eef7f56) SHA1(05c23aa6a598478cd4822634cff96055c585e9d2) ) - ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) ) - ROM_LOAD( "ds18", 0x30000, 0x08000, CRC(2b2d1468) SHA1(a144ac1b367e1fec876156230e9ab1c99416962e) ) - ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) ) - ROM_LOAD( "ds17", 0x50000, 0x08000, CRC(75ae349a) SHA1(15755a28925d5ed37fab4bd988716fcc5d20c290) ) - ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) ) - ROM_LOAD( "ds22", 0x70000, 0x08000, CRC(c8ffb148) SHA1(ae1a8b3cd1f5e423dc1a3c7d05f9fe7c689432e3) ) - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) ) - ROM_CONTINUE( 0x10000, 0x08000 ) - ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) ) - ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) ) - ROM_CONTINUE( 0x30000, 0x08000 ) - ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) ) - ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) ) - ROM_CONTINUE( 0x50000, 0x08000 ) - ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) ) - ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) ) - ROM_CONTINUE( 0x70000, 0x08000 ) - ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) ) - - ROM_REGION( 1024, "proms", 0 ) - ROM_LOAD( "mb7122e.10b", 0x00000, 0x400, CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) ) /* Priority (Not yet used) */ - - ROM_REGION( 0x0600, "plds", 0 ) - ROM_LOAD( "pal16r4nc.10u", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16r4nc.11g", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16r4nc.1s", 0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ + ROM_LOAD( "dx06.a7", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) + ROM_LOAD( "dx07.a8", 0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) ) + ROM_LOAD( "dx08.a9", 0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) ) + ROM_LOAD( "dx09.a10", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) ) + ROM_LOAD( "dx10.b1", 0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) ) + ROM_LOAD( "dx11.b2", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) ROM_END ROM_START( oscar ) @@ -3138,357 +3409,140 @@ ROM_START( oscarj2 ) ROM_LOAD( "du-13.bin", 0x00000, 0x200, CRC(bea1f87e) SHA1(f5215992e4b53c9cd4c7e0b20ff5cfdce3ab6d02) ) /* Priority (Not yet used) */ ROM_END -ROM_START( lastmisn ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "dl03-6.13h", 0x08000, 0x08000, CRC(47751a5e) SHA1(190970a6eb849781e8853f2bed7b34ac44e569ca) ) /* Rev 6 roms */ - ROM_LOAD( "lm_dl04.7h", 0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) ) +ROM_START( srdarwin ) + ROM_REGION( 0x28000, "maincpu", 0 ) + ROM_LOAD( "dy01-e.b14", 0x20000, 0x08000, CRC(176e9299) SHA1(20cd44ab610e384ab4f0172054c9adc432b12e9c) ) + ROM_CONTINUE( 0x08000, 0x08000 ) + ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) ) - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) + ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ + ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) ) ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) - ROM_CONTINUE( 0x06000, 0x2000 ) - ROM_CONTINUE( 0x04000, 0x2000 ) - ROM_CONTINUE( 0x02000, 0x2000 ) + ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) ) - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) - ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) - ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) - ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) + ROM_REGION( 0x30000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) ) + ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) ) + ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) ) + ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) ) + ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) ) + ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) ) - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) - ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) - ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) - ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) + ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dy03.b4", 0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) ) + ROM_CONTINUE( 0x10000, 0x4000 ) + ROM_CONTINUE( 0x20000, 0x4000 ) + ROM_CONTINUE( 0x30000, 0x4000 ) + ROM_LOAD( "dy02.b5", 0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) ) + ROM_CONTINUE( 0x18000, 0x4000 ) + ROM_CONTINUE( 0x28000, 0x4000 ) + ROM_CONTINUE( 0x38000, 0x4000 ) ROM_REGION( 256, "proms", 0 ) - ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ + ROM_LOAD( "dy12.f4", 0x00000, 0x100, CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) ) /* Priority (Not yet used) */ ROM_END -ROM_START( lastmisno ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "lm_dl03.13h", 0x08000, 0x08000, CRC(357f5f6b) SHA1(a114aac50db62a6bcb943681e517ad7c88ec47f4) ) /* Rev 5 roms */ - ROM_LOAD( "lm_dl04.7h", 0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) ) +ROM_START( srdarwinj ) + ROM_REGION( 0x28000, "maincpu", 0 ) + ROM_LOAD( "dy_01.rom", 0x20000, 0x08000, CRC(1eeee4ff) SHA1(89a70de8bd61c671582b11773ce69b2edcd9c2f8) ) + ROM_CONTINUE( 0x08000, 0x08000 ) + ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) ) - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) + ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ + ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) ) ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) - ROM_CONTINUE( 0x06000, 0x2000 ) - ROM_CONTINUE( 0x04000, 0x2000 ) - ROM_CONTINUE( 0x02000, 0x2000 ) + ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) ) - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) - ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) - ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) - ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) + ROM_REGION( 0x30000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) ) + ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) ) + ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) ) + ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) ) + ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) ) + ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) ) - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) - ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) - ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) - ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) + ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dy03.b4", 0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) ) + ROM_CONTINUE( 0x10000, 0x4000 ) + ROM_CONTINUE( 0x20000, 0x4000 ) + ROM_CONTINUE( 0x30000, 0x4000 ) + ROM_LOAD( "dy02.b5", 0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) ) + ROM_CONTINUE( 0x18000, 0x4000 ) + ROM_CONTINUE( 0x28000, 0x4000 ) + ROM_CONTINUE( 0x38000, 0x4000 ) ROM_REGION( 256, "proms", 0 ) - ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ + ROM_LOAD( "dy12.f4", 0x00000, 0x100, CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) ) /* Priority (Not yet used) */ ROM_END -ROM_START( lastmisnj ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "dl03-.13h", 0x08000, 0x08000, CRC(4be5e7e1) SHA1(9f943658663da31947cebdcbcb5f4e2be0714c06) ) - ROM_LOAD( "dl04-.7h", 0x10000, 0x10000, CRC(f026adf9) SHA1(4ccd0e714a6eb7cee388c93beee2d5510407c961) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "dl02-.18h", 0x0000, 0x10000, CRC(d0de2b5d) SHA1(e0bb34c2a2ef6fc6f05ab9a98bd23a39004c0c05) ) +ROM_START( cobracom ) + ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_LOAD( "el11-5.bin", 0x08000, 0x08000, CRC(af0a8b05) SHA1(096e4e7f2785a20bfaec14277413ce4e20e90214) ) + ROM_LOAD( "el12-4.bin", 0x10000, 0x10000, CRC(7a44ef38) SHA1(d7dc277dce08f9d073290e100be4a7ca2e2b82cb) ) + ROM_LOAD( "el13.bin", 0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dl05-.5h", 0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) ) + ROM_LOAD( "el10-4.bin", 0x8000, 0x8000, CRC(edfad118) SHA1(10de8805472346fead62460a3fdc09ae26a4e0d5) ) - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "el14.bin", 0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) ) - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dl01-.2a", 0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) ) - ROM_CONTINUE( 0x06000, 0x2000 ) - ROM_CONTINUE( 0x04000, 0x2000 ) - ROM_CONTINUE( 0x02000, 0x2000 ) + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "el00-4.bin", 0x00000, 0x10000, CRC(122da2a8) SHA1(ce72f16abf7e5449c7d044d4b827e8735c3be0ff) ) + ROM_LOAD( "el01-4.bin", 0x20000, 0x10000, CRC(27bf705b) SHA1(196c35aaf3816d3eef4c2af6d146a90a48365d33) ) + ROM_LOAD( "el02-4.bin", 0x40000, 0x10000, CRC(c86fede6) SHA1(97584fa19591651fcfb39d1b2b6306165e93554c) ) + ROM_LOAD( "el03-4.bin", 0x60000, 0x10000, CRC(1d8a855b) SHA1(429261c200dddc62a330be8aea150b2037133188) ) - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dl11-.13f", 0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) ) - ROM_LOAD( "dl12-.9f", 0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) ) - ROM_LOAD( "dl13-.8f", 0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) ) - ROM_LOAD( "dl10-.16f", 0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) ) + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles 1 */ + ROM_LOAD( "el05.bin", 0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) ) + ROM_LOAD( "el06.bin", 0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) ) + ROM_LOAD( "el04.bin", 0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) ) + ROM_LOAD( "el07.bin", 0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) ) - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dl09-.12k", 0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) ) - ROM_LOAD( "dl08-.14k", 0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) ) - ROM_LOAD( "dl07-.15k", 0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) ) - ROM_LOAD( "dl06-.17k", 0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) ) - - ROM_REGION( 256, "proms", 0 ) - ROM_LOAD( "dl-14.9c", 0x00000, 0x100, CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) ) /* Priority (Not yet used) */ + ROM_REGION( 0x80000, "gfx4", 0 ) /* tiles 2 */ + ROM_LOAD( "el08.bin", 0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) ) + ROM_CONTINUE( 0x40000, 0x08000 ) + ROM_LOAD( "el09.bin", 0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) ) + ROM_CONTINUE( 0x60000, 0x08000 ) ROM_END -ROM_START( shackled ) - ROM_REGION( 0x48000, "maincpu", 0 ) - ROM_LOAD( "dk-02.rom", 0x08000, 0x08000, CRC(87f8fa85) SHA1(1cb93a60eefdb453a3cc6ec9c5cc2e367fb8aeb0) ) - ROM_LOAD( "dk-06.rom", 0x10000, 0x10000, CRC(69ad62d1) SHA1(1aa23b12ab4f1908cddd25f091e1f9bd70a5113c) ) - ROM_LOAD( "dk-05.rom", 0x20000, 0x10000, CRC(598dd128) SHA1(10843c5352eef03c8675df6abaf23c9c9c795aa3) ) - ROM_LOAD( "dk-04.rom", 0x30000, 0x10000, CRC(36d305d4) SHA1(17586c316aff405cf20c1467d69c98fa2a3c2630) ) - ROM_LOAD( "dk-03.rom", 0x40000, 0x08000, CRC(6fd90fd1) SHA1(2f8db17e5545c82d243a7e23e7bda2c2a9101360) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "dk-01.rom", 0x00000, 0x10000, CRC(71fe3bda) SHA1(959cce01362b2c670c2e15b03a78a1ff9cea4ee9) ) +ROM_START( cobracomj ) + ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_LOAD( "eh-11.rom", 0x08000, 0x08000, CRC(868637e1) SHA1(8b1e3e045e341bb94b1f6c7d89198b22e6c19de7) ) + ROM_LOAD( "eh-12.rom", 0x10000, 0x10000, CRC(7c878a83) SHA1(9b2a3083c6dae69626fdab16d97517d30eaa1859) ) + ROM_LOAD( "el13.bin", 0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dk-07.rom", 0x08000, 0x08000, CRC(887e4bcc) SHA1(6427396080e9cd8647adff47c8ed04593a14268c) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "eh-10.rom", 0x8000, 0x8000, CRC(62ca5e89) SHA1(b04acaccc58846e0d277868a873a440b7f8071b0) ) ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dk-00.rom", 0x00000, 0x08000, CRC(69b975aa) SHA1(38cb96768c79ff1aa1b4b190e08ec9155baf698a) ) + ROM_LOAD( "el14.bin", 0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) ) ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dk-12.rom", 0x00000, 0x10000, CRC(615c2371) SHA1(30b25dc27d34646d886a465c77622eaa894d83c3) ) - ROM_LOAD( "dk-13.rom", 0x10000, 0x10000, CRC(479aa503) SHA1(1167f0d15439c95a1094f81855203e863ce0488d) ) - ROM_LOAD( "dk-14.rom", 0x20000, 0x10000, CRC(cdc24246) SHA1(1a4189bc2b1fa99740dd7921608159936ba3bd07) ) - ROM_LOAD( "dk-15.rom", 0x30000, 0x10000, CRC(88db811b) SHA1(7d3c4a80925f323efb589798b4a341d1a2ca95f9) ) - ROM_LOAD( "dk-16.rom", 0x40000, 0x10000, CRC(061a76bd) SHA1(5bcb513e48bed9b7c4207d94531be691a85e295d) ) - ROM_LOAD( "dk-17.rom", 0x50000, 0x10000, CRC(a6c5d8af) SHA1(58f3fece9a5ef8b39090a2f39610381b8e7cdbf7) ) - ROM_LOAD( "dk-18.rom", 0x60000, 0x10000, CRC(4d466757) SHA1(701d79bebbba4f266e19080d16ff2f93ffa94287) ) - ROM_LOAD( "dk-19.rom", 0x70000, 0x10000, CRC(1911e83e) SHA1(174e9db3f2211ecbbb93c6bda8f6185dbfdbc818) ) + ROM_LOAD( "eh-00.rom", 0x00000, 0x10000, CRC(d96b6797) SHA1(01c4a9f2bebb13cba14636690cd5356db73f045e) ) + ROM_LOAD( "eh-01.rom", 0x20000, 0x10000, CRC(3fef9c02) SHA1(e4b731faf6a2f4e5fed8ba9bd07e0f203981ffec) ) + ROM_LOAD( "eh-02.rom", 0x40000, 0x10000, CRC(bfae6c34) SHA1(9503a120e11e9466cd9a2931fd44a631d72ca5f0) ) + ROM_LOAD( "eh-03.rom", 0x60000, 0x10000, CRC(d56790f8) SHA1(1cc7cb9f7102158de14a737e9317a54f01790ba8) ) - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dk-11.rom", 0x00000, 0x10000, CRC(5cf5719f) SHA1(8c7582ac19010421ec748391a193aa18e51b981f) ) - ROM_LOAD( "dk-10.rom", 0x20000, 0x10000, CRC(408e6d08) SHA1(28cb76792e5f84bd101a91cb82597a5939804f84) ) - ROM_LOAD( "dk-09.rom", 0x40000, 0x10000, CRC(c1557fac) SHA1(7d39ec793113a48baf45c2ea07abb07e2e48985a) ) - ROM_LOAD( "dk-08.rom", 0x60000, 0x10000, CRC(5e54e9f5) SHA1(1ab41a3bde1f2c2be670e89cf402be28001c17d1) ) -ROM_END + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles 1 */ + ROM_LOAD( "el05.bin", 0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) ) + ROM_LOAD( "el06.bin", 0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) ) + ROM_LOAD( "el04.bin", 0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) ) + ROM_LOAD( "el07.bin", 0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) ) -ROM_START( breywood ) - ROM_REGION( 0x48000, "maincpu", 0 ) - ROM_LOAD( "7.bin", 0x08000, 0x08000, CRC(c19856b9) SHA1(766994703bb59879c311675353d7231ad27c7c16) ) - ROM_LOAD( "3.bin", 0x10000, 0x10000, CRC(2860ea02) SHA1(7ac090c3ae9d71baa6227ec9555f1c9f2d25ea0d) ) - ROM_LOAD( "4.bin", 0x20000, 0x10000, CRC(0fdd915e) SHA1(262df956dfc727c710ade28af7f33fddaafd7ee2) ) - ROM_LOAD( "5.bin", 0x30000, 0x10000, CRC(71036579) SHA1(c58ff3222b5bcd75d58c5f282554e92103e80916) ) - ROM_LOAD( "6.bin", 0x40000, 0x08000, CRC(308f4893) SHA1(539c138ff01c5718cc8a982482b989468d532699) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "8.bin", 0x0000, 0x10000, CRC(3d9fb623) SHA1(6e5eaad9bb0a432e2da5da5b18a2ed36617bdde2) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "2.bin", 0x8000, 0x8000, CRC(4a471c38) SHA1(963ed7b6afeefdfc2cf0d65b0998f973330e6495) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "1.bin", 0x00000, 0x08000, CRC(815a891a) SHA1(e557d6a35821a8589d9e3df0f42131b58b08c8ca) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "20.bin", 0x00000, 0x10000, CRC(2b7634f2) SHA1(56d963d4960d9b3e888c8107340763e176adfa9b) ) - ROM_LOAD( "19.bin", 0x10000, 0x10000, CRC(4530a952) SHA1(99251a21347815cba465669e18df31262bcdaba1) ) - ROM_LOAD( "18.bin", 0x20000, 0x10000, CRC(87c28833) SHA1(3f1a294065326389d304e540bc880844c6c7cb06) ) - ROM_LOAD( "17.bin", 0x30000, 0x10000, CRC(bfb43a4d) SHA1(56092935147a3b643a9b39eb7cfc067a764644c5) ) - ROM_LOAD( "16.bin", 0x40000, 0x10000, CRC(f9848cc4) SHA1(6d8e77b67ce4d418defba6f6979632f31d2307c6) ) - ROM_LOAD( "15.bin", 0x50000, 0x10000, CRC(baa3d218) SHA1(3c31df23cc871cffd9a4dafae106e4a98f5af848) ) - ROM_LOAD( "14.bin", 0x60000, 0x10000, CRC(12afe533) SHA1(6df3471c16a714d118717da549a7523aa388ddd3) ) - ROM_LOAD( "13.bin", 0x70000, 0x10000, CRC(03373755) SHA1(d2541dd957803168f246d96b7cd74eae7fd43188) ) - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "9.bin", 0x00000, 0x10000, CRC(067e2a43) SHA1(f1da7455aab21f94ed25a93b0ebfde69baa475d1) ) - ROM_LOAD( "10.bin", 0x20000, 0x10000, CRC(c19733aa) SHA1(3dfcfd33c5c4f792bb941ac933301c03ddd72b03) ) - ROM_LOAD( "11.bin", 0x40000, 0x10000, CRC(e37d5dbe) SHA1(ff79b4f6d8b0a3061e78d15480df0155650f347f) ) - ROM_LOAD( "12.bin", 0x60000, 0x10000, CRC(beee880f) SHA1(9a818a75cbec425a13f629bda6d50aa341aa1896) ) -ROM_END - -/* -Main Compoennts ---------------- - -Top board (DATA EAST DE-0250-3): -2x MC68B09EP (18e,19e)(main) -1x RP65C02A (3f)(sound) -1x YM3812 (1e)(sound) -1x YM2203 (1f)(sound) -2x Y30148 (1j,2j)(sound) -1x OKI M5205 (3j)(sound) -1x NEC PC3403C (1j)(sound) -1x C4558C (2j)(sound) -1x oscillator 8.000 (x1) -1x ID8751H (read protected) - -Lower board (DATA EAST DE-0251-2): -1x DECO TC15G032AY-0013-8644a-DSPC10 (square component, with 135 pass-through pins)(14h) -1x DECO VSC30-M60348-6102 (DIL40)(9a) -1x DECO HMC20-M60232-6902 (DIL28)(14a) -1x oscillator 12.000 (x1) - -ROMs ----- - -Top board (DATA EAST DE-0250-3): -2x MBM27256 (00,03) -10x MBM27C512 (01,02,04,05,06,07,08,09,10,11) -1x MB7122 (DIL18) (15) - -Lower board (DATA EAST DE-0251-2): -3x MBM27C512 - -Notes ------ - -Top board (DATA EAST DE-0250-3): -1x JAMMA edge connector -2x 25x2 legs connectors to lower board (cn1,cn2) -1x trimmer (volume) -2x 8 switches dip (7k,16k) - -Lower board (DATA EAST DE-0251-2): -2x 25x2 legs connectors to top board (cn1,cn2) - -*/ - -ROM_START( csilver ) - ROM_REGION( 0x48000, "maincpu", 0 ) - ROM_LOAD( "dx03-12.18d", 0x08000, 0x08000, CRC(2d926e7c) SHA1(cf38e92904edb1870b0a4965f9049d67efe8cf6a) ) - ROM_LOAD( "dx01.12d", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) ) - ROM_LOAD( "dx02.13d", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) ) - - ROM_REGION( 0x18000, "audiocpu", 0 ) - ROM_LOAD( "dx05.3f", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) // dx-8.19a ? - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dx00.3d", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ - ROM_LOAD( "dx14.15k", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) - /* 0x10000-0x1ffff empy */ - ROM_LOAD( "dx13.13k", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) - /* 0x30000-0x3ffff empy */ - ROM_LOAD( "dx12.10k", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) - /* 0x50000-0x5ffff empy */ - /* 0x60000-0x7ffff empy (no 4th plane) */ - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ - ROM_LOAD( "dx06.5f", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) - ROM_LOAD( "dx07.7f", 0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) ) - ROM_LOAD( "dx08.8f", 0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) ) - ROM_LOAD( "dx09.10f", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) ) - ROM_LOAD( "dx10.12f", 0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) ) - ROM_LOAD( "dx11.13f", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) -ROM_END - -/* Different IC positions to World set? */ -ROM_START( csilverj ) - ROM_REGION( 0x48000, "maincpu", 0 ) - ROM_LOAD( "dx03-3.a4", 0x08000, 0x08000, CRC(02dd8cfc) SHA1(f29c0d9dd03e8c52672c0f3dbee44a93c5b4261d) ) - ROM_LOAD( "dx01.a2", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) ) - ROM_LOAD( "dx02.a3", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ - ROM_LOAD( "dx04-1.a5", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) ) - - ROM_REGION( 0x18000, "audiocpu", 0 ) - ROM_LOAD( "dx05.a6", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dx00.a1", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) ) - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ - ROM_LOAD( "dx14.b5", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) - /* 0x10000-0x1ffff empy */ - ROM_LOAD( "dx13.b4", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) - /* 0x30000-0x3ffff empy */ - ROM_LOAD( "dx12.b3", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) - /* 0x50000-0x5ffff empy */ - /* 0x60000-0x7ffff empy (no 4th plane) */ - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ - ROM_LOAD( "dx06.a7", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) - ROM_LOAD( "dx07.a8", 0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) ) - ROM_LOAD( "dx08.a9", 0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) ) - ROM_LOAD( "dx09.a10", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) ) - ROM_LOAD( "dx10.b1", 0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) ) - ROM_LOAD( "dx11.b2", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) -ROM_END - -ROM_START( garyoret ) - ROM_REGION( 0x50000, "maincpu", 0 ) - ROM_LOAD( "dv00", 0x08000, 0x08000, CRC(cceaaf05) SHA1(b8f54638feab77d023e01ced947e1269f0d19fd8) ) - ROM_LOAD( "dv01", 0x10000, 0x10000, CRC(c33fc18a) SHA1(0d9594b0e6c39aea5b9f15f6aa364b31604f1066) ) - ROM_LOAD( "dv02", 0x20000, 0x10000, CRC(f9e26ce7) SHA1(8589594ebc7ae16942739382273a222dfa30b3b7) ) - ROM_LOAD( "dv03", 0x30000, 0x10000, CRC(55d8d699) SHA1(da1519cd54d27cc406420ce0845e43f7228cfd4e) ) - ROM_LOAD( "dv04", 0x40000, 0x10000, CRC(ed3d00ee) SHA1(6daa2ee509235ad03d3012a00382820279add620) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "dv05", 0x08000, 0x08000, CRC(c97c347f) SHA1(a1b22733dc15d524af97db3e608a82503a49b182) ) - - ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ - ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ - ROM_LOAD( "dv14", 0x00000, 0x08000, CRC(fb2bc581) SHA1(d597976c5ae586166c49051cc3de8cf0c2e5a5e1) ) /* Characters */ - - ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "dv22", 0x00000, 0x10000, CRC(cef0367e) SHA1(8beb3a6b91ec0a6ec052243c8f626a581d349f65) ) - ROM_LOAD( "dv21", 0x10000, 0x08000, CRC(90042fb7) SHA1(f19bbf158c92030e8fddb5087b5b69b71956baf8) ) - ROM_LOAD( "dv20", 0x20000, 0x10000, CRC(451a2d8c) SHA1(f4eea444b797d394edeb514ddc1c494fd7ccc2f2) ) - ROM_LOAD( "dv19", 0x30000, 0x08000, CRC(14e1475b) SHA1(f0aec5b7b4be0da06a73ed382e7e851654e47e47) ) - ROM_LOAD( "dv18", 0x40000, 0x10000, CRC(7043bead) SHA1(5d1be8b9cd56ae43d60406b05258d20de980096d) ) - ROM_LOAD( "dv17", 0x50000, 0x08000, CRC(28f449d7) SHA1(cf1bc690b67910c42ad09531ab1d88461d00b944) ) - ROM_LOAD( "dv16", 0x60000, 0x10000, CRC(37e4971e) SHA1(9442c315b7cdbcc046d9e6838cb793c1857174ed) ) - ROM_LOAD( "dv15", 0x70000, 0x08000, CRC(ca41b6ac) SHA1(d7a9ef6c89741c1e8e17a668a9d39ea089f5c73f) ) - - ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "dv08", 0x00000, 0x08000, CRC(89c13e15) SHA1(6507e60de5cd78a5b46090e4825a44c2a23631d7) ) - ROM_CONTINUE( 0x10000, 0x08000 ) - ROM_LOAD( "dv09", 0x08000, 0x08000, CRC(6a345a23) SHA1(b86f81b9fe25acd833ca3e2cff6cfa853c02280a) ) - ROM_CONTINUE( 0x18000, 0x08000 ) - - ROM_LOAD( "dv06", 0x20000, 0x08000, CRC(1eb52a20) SHA1(46670ed973f794be9c2c7e6bf5d97db51211e9a9) ) - ROM_CONTINUE( 0x30000, 0x08000 ) - ROM_LOAD( "dv07", 0x28000, 0x08000, CRC(e7346ef8) SHA1(8083a7a182e8ed904daf2f692115d01b3d0830eb) ) - ROM_CONTINUE( 0x38000, 0x08000 ) - - ROM_LOAD( "dv12", 0x40000, 0x08000, CRC(46ba5af4) SHA1(a1c13e7e3c85060202120b64e3cee32c1f733270) ) - ROM_CONTINUE( 0x50000, 0x08000 ) - ROM_LOAD( "dv13", 0x48000, 0x08000, CRC(a7af6dfd) SHA1(fa41bdafb64c79bd9769903fd37d4d5172b66a52) ) - ROM_CONTINUE( 0x58000, 0x08000 ) - - ROM_LOAD( "dv10", 0x60000, 0x08000, CRC(68b6d75c) SHA1(ac719ef6b30ac9e63fab13cb359e6114493f274d) ) - ROM_CONTINUE( 0x70000, 0x08000 ) - ROM_LOAD( "dv11", 0x68000, 0x08000, CRC(b5948aee) SHA1(587afbfeda985bede9e4b5f57dad6763f4294962) ) - ROM_CONTINUE( 0x78000, 0x08000 ) + ROM_REGION( 0x80000, "gfx4", 0 ) /* tiles 2 */ + ROM_LOAD( "el08.bin", 0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) ) + ROM_CONTINUE( 0x40000, 0x08000 ) + ROM_LOAD( "el09.bin", 0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) ) + ROM_CONTINUE( 0x60000, 0x08000 ) ROM_END /******************************************************************************/ @@ -3521,6 +3575,34 @@ static DRIVER_INIT( deco222 ) } /* Below, I set up the correct number of banks depending on the "maincpu" region size */ +static DRIVER_INIT( lastmisn ) +{ + UINT8 *ROM = machine.region("maincpu")->base(); + memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000); + DRIVER_INIT_CALL( dec8 ); +} + +static DRIVER_INIT( shackled ) +{ + UINT8 *ROM = machine.region("maincpu")->base(); + memory_configure_bank(machine, "bank1", 0, 14, &ROM[0x10000], 0x4000); + DRIVER_INIT_CALL( dec8 ); +} + +static DRIVER_INIT( gondo ) +{ + UINT8 *ROM = machine.region("maincpu")->base(); + memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000); + DRIVER_INIT_CALL( dec8 ); +} + +static DRIVER_INIT( garyoret ) +{ + UINT8 *ROM = machine.region("maincpu")->base(); + memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000); + DRIVER_INIT_CALL( dec8 ); +} + static DRIVER_INIT( ghostb ) { UINT8 *ROM = machine.region("maincpu")->base(); @@ -3545,34 +3627,6 @@ static DRIVER_INIT( meikyuh ) DRIVER_INIT_CALL( dec8 ); } -static DRIVER_INIT( cobracom ) -{ - UINT8 *ROM = machine.region("maincpu")->base(); - memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( dec8 ); -} - -static DRIVER_INIT( oscar ) -{ - UINT8 *ROM = machine.region("maincpu")->base(); - memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( deco222 ); -} - -static DRIVER_INIT( gondo ) -{ - UINT8 *ROM = machine.region("maincpu")->base(); - memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( dec8 ); -} - -static DRIVER_INIT( garyoret ) -{ - UINT8 *ROM = machine.region("maincpu")->base(); - memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( dec8 ); -} - static DRIVER_INIT( csilver ) { UINT8 *ROM = machine.region("maincpu")->base(); @@ -3583,18 +3637,11 @@ static DRIVER_INIT( csilver ) DRIVER_INIT_CALL( dec8 ); } -static DRIVER_INIT( shackled ) -{ - UINT8 *ROM = machine.region("maincpu")->base(); - memory_configure_bank(machine, "bank1", 0, 14, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( dec8 ); -} - -static DRIVER_INIT( lastmisn ) +static DRIVER_INIT( oscar ) { UINT8 *ROM = machine.region("maincpu")->base(); memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000); - DRIVER_INIT_CALL( dec8 ); + DRIVER_INIT_CALL( deco222 ); } static DRIVER_INIT( srdarwin ) @@ -3604,29 +3651,36 @@ static DRIVER_INIT( srdarwin ) DRIVER_INIT_CALL( deco222 ); } +static DRIVER_INIT( cobracom ) +{ + UINT8 *ROM = machine.region("maincpu")->base(); + memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x4000); + DRIVER_INIT_CALL( dec8 ); +} + /******************************************************************************/ -GAME( 1988, cobracom, 0, cobracom, cobracom, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", GAME_SUPPORTS_SAVE ) -GAME( 1988, cobracomj,cobracom, cobracom, cobracom, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 1987, ghostb, 0, ghostb, ghostb, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", GAME_SUPPORTS_SAVE ) -GAME( 1987, ghostb2a, ghostb, ghostb, ghostb, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", GAME_SUPPORTS_SAVE ) -GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", GAME_SUPPORTS_SAVE ) -GAME( 1987, meikyuh, ghostb, ghostb, meikyuh, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", GAME_SUPPORTS_SAVE ) -GAME( 1987, meikyuha, ghostb, ghostb, meikyuh, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", GAME_SUPPORTS_SAVE ) -GAME( 1987, srdarwin, 0, srdarwin, srdarwin, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", GAME_SUPPORTS_SAVE ) -GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwin, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 1987, gondo, 0, gondo, gondo, gondo, ROT270, "Data East USA", "Gondomania (US)", GAME_SUPPORTS_SAVE ) -GAME( 1987, makyosen, gondo, gondo, gondo, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 1988, oscar, 0, oscar, oscar, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", GAME_SUPPORTS_SAVE ) -GAME( 1987, oscaru, oscar, oscar, oscaru, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", GAME_SUPPORTS_SAVE ) -GAME( 1987, oscarj1, oscar, oscar, oscaru, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", GAME_SUPPORTS_SAVE ) -GAME( 1987, oscarj2, oscar, oscar, oscaru, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", GAME_SUPPORTS_SAVE ) -GAME( 1986, lastmisn, 0, lastmisn, lastmisn, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", GAME_SUPPORTS_SAVE ) -GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", GAME_SUPPORTS_SAVE ) -GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 1986, shackled, 0, shackled, shackled, shackled, ROT0, "Data East USA", "Shackled (US)", GAME_SUPPORTS_SAVE ) -GAME( 1986, breywood, shackled, shackled, shackled, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", GAME_SUPPORTS_SAVE ) -GAME( 1987, csilver, 0, csilver, csilver, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", GAME_SUPPORTS_SAVE ) -GAME( 1987, csilverj, csilver, csilver, csilver, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 1987, garyoret, 0, garyoret, garyoret, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1986, lastmisn, 0, lastmisn, lastmisn, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", GAME_SUPPORTS_SAVE ) +GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", GAME_SUPPORTS_SAVE ) +GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1986, shackled, 0, shackled, shackled, shackled, ROT0, "Data East USA", "Shackled (US)", GAME_SUPPORTS_SAVE ) +GAME( 1986, breywood, shackled, shackled, breywood, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", GAME_SUPPORTS_SAVE ) +GAME( 1987, gondo, 0, gondo, gondo, gondo, ROT270, "Data East USA", "Gondomania (US)", GAME_SUPPORTS_SAVE ) +GAME( 1987, makyosen, gondo, gondo, gondo, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1987, garyoret, 0, garyoret, garyoret, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1987, ghostb, 0, ghostb, ghostb, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", GAME_SUPPORTS_SAVE ) +GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", GAME_SUPPORTS_SAVE ) +GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", GAME_SUPPORTS_SAVE ) +GAME( 1987, meikyuh, ghostb, ghostb, meikyuh, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1987, meikyuha, ghostb, ghostb, meikyuh, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1987, csilver, 0, csilver, csilver, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", GAME_SUPPORTS_SAVE ) +GAME( 1987, csilverj, csilver, csilver, csilverj, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1987, oscar, 0, oscar, oscar, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) +GAME( 1988, oscaru, oscar, oscar, oscarj, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) +GAME( 1987, oscarj1, oscar, oscar, oscarj, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) +GAME( 1987, oscarj2, oscar, oscar, oscarj, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) +GAME( 1987, srdarwin, 0, srdarwin, srdarwin, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", GAME_SUPPORTS_SAVE ) +GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwinj, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1988, cobracom, 0, cobracom, cobracom, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) +GAME( 1988, cobracomj,cobracom, cobracom, cobracom, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) diff --git a/src/mame/includes/dec8.h b/src/mame/includes/dec8.h index dc03ee01807..3ed5f50baf3 100644 --- a/src/mame/includes/dec8.h +++ b/src/mame/includes/dec8.h @@ -33,8 +33,14 @@ public: int m_nmi_enable; int m_i8751_return; int m_i8751_value; + int m_coinage_id; int m_coin1; int m_coin2; + int m_need1; + int m_need2; + int m_cred1; + int m_cred2; + int m_credits; int m_latch; int m_snd; int m_msm5205next;