diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index 349a82a3b08..6e6000ae10a 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -145,27 +145,6 @@ Notes about 'frogg' : bit 5 of IN1 is tested if "Cabinet" Dip Switch is set to "Cocktail". -Notes about 'calipso' : ---------------------- - - Calipso was apperantly redesigned for two player simultanious play. - There is code at $298a to flip the screen, but location $8669 has to be - set to 2. It's set to 1 no matter how many players are playing. - It's possible that there is a cocktail version of the game. - - -Notes about 'moonwar' : ---------------------- - - Moonwar: 8255 Port C bit 4 was originally designed so when bit4=0, 1P spinner - is selected, and when bit4=1, 2P spinner gets selected. But they forgot to - change the 8255 initialization value and Port C was set to input, setting the - spinner select bit to HI regardless what was written to it. This bug has been - corrected in the newer set, but, to maintain hardware compatibility with - older PCB's, they had to reverse to active status of the select bit. So in the - newer set, Bit4=1 selects the 1P spinner and Bit4=0 selects the 2P spinner. - - Galaxian Bootleg Single Board Layout: ------------------------------------- @@ -207,6 +186,215 @@ Galaxian Bootleg Single Board Layout: 0 +Stephh's notes (based on the games Z80 code and some tests) for games based on 'scobra' MACHINE_DRIVER : + +1) 'scobra' and clones + +1a) 'scobra' + + - Player 2 controls are used for player 2 regardless of the "Cabinet" Dip Switch. + - COIN1 and SERVICE1 share the same coinage while COIN2 always awards 3 credits per coin; + when "Coinage" is set to "99 Credits", credits are always set to 99 when pressing COIN1 (code at 0x037d). + - There is an unused coinage routine at 0x0159 with the following settings : + + PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x00, "A 2/1 B 99" ) + PORT_DIPSETTING( 0x06, "A 1/2 B 1/1" ) + PORT_DIPSETTING( 0x04, "A 1/5 B 1/1" ) + PORT_DIPSETTING( 0x02, "A 1/7 B 1/1" ) + + I can't tell at the moment if it's a leftover from another Konami game on similar hardware. + - You can have 3 or 4 lives at start, and you can only continue 4 times (code at 0x0ebf). + +1b) 'scobrase' + + - The only difference in main CPU with 'scobra' is not in code but in data : + * data at 0x1323+ and 0x1575+ displays " (c) SEGA 1981 " instead of "(c) KONAMI 1981". + * data from 0x3d0c to 0x3fff has an unknown effect (this area is filled with 0xff in 'scobra'). + * data from 0x5b62 to 0x5b6f displays "SEGA" instead of "OSAKA" on the first building in the "BASE" + (last) level ("KONAMI" is always still displayed on other buildings). + As the code is the same, comments from 'scobra' also apply to this set. + - Audio CPU is different than the one in 'scobra'. More investigation is needed ! + +1c) 'scobras' + + - Main CPU is different than the one in 'scobra', but audio CPU is the same as 'scobrase' ! + - Player 2 controls are used for player 2 regardless of the "Cabinet" Dip Switch. + - COIN1 and SERVICE1 share the same coinage while COIN2 always awards 3 credits per coin; + when "Coinage" is set to "99 Credits", credits are always set to 99 when pressing COIN1 (code at 0x0bec). + - There is NO unused coinage routine. + - You can have 3 or 5 lives at start, and you can only continue 255 times (code at 0x00e3). + - On the first building in the "BASE" (last) level is written "STERN" instead of "OSAKA". + +1d) 'scobrab' + + - The only difference in main CPU with 'scobras' is not in code but in data : + * data from 0x0434 to 0x043e affects the addresses in ROM area of the strings to display. + * data from 0x0456 to 0x07a0 affects the strings which are displayed (almost all of them). + - Audio CPU is the same as the one in 'scobra' (with different ROM names though). + +1e) 'suprheli' + + - The only difference in main CPU with 'scobras' is not in code but in data : + * data at 0x0522+ displays "- SUPER HELI - " instead of "- SUPER COBRA -". + * data at 0x0547+ and 0x0799+ displays " " instead of "(c) STERN 1981 ". + * data from 0x5b26 to 0x5b32 displays "APPLE" instead of "STERN" on the first building in the "BASE" + (last) level. + * data from 0x5bbb to 0x5bc9 displays "ORANGE" instead of "KONAMI" on the other buildings in the "BASE" + (last) level. + As the code is the same, comments from 'scobras' also apply to this set. + - There is only ONE byte of difference with audio CPU in 'scobrase' : + + Z:\MAME\data>fc /B epr1277.5e 9.9d + Comparaison des fichiers epr1277.5e et 9.9D + 00001332: FD FF + + Could it be a rotten bit ? As I have no evidence of this, I don't flag the ROM as BAD_DUMP. + +2) 'moonwar' and clones + + - "8255 Port C bit 4 was originally designed so when bit4=0, 1P spinner is selected, and when bit4=1, + 2P spinner gets selected. But they forgot to change the 8255 initialization value and Port C was set + to input, setting the spinner select bit to HI regardless what was written to it. This bug has been + corrected in the newer set, but, to maintain hardware compatibility with older PCB's, they had to reverse + to active status of the select bit. So in the newer set, Bit4=1 selects the 1P spinner and Bit4=0 selects + the 2P spinner". + +2a) 'moonwar' + + - Press START1 when reseting the game to enter sort of inputs "test mode". + - "Hyperflip" button is ignored when "Cabinet" is set to "Cocktail" (code at 0x108d). + - When in "Free Play" mode, you only 3 lives at start. + +2b) 'moonwara' + + - Press START1 when reseting the game to enter sort of inputs "test mode". + - "Hyperflip" button is ignored when "Cabinet" is set to "Cocktail" (code at 0x107f). + - Besides the spinner bug, coinage is very weird in this set (no correlation between COIN1 and COIN2). + +3) 'armorcar' and clones + +3a) 'armorcar' + + - Press P2 BUTTON2 when reseting the game to enter sort of inputs "test mode". + You'll notice that there is some leftover code from 'moonwar' as you can see 2 (muxed) PORT A + (and there are still writes to PORT C bit 4). This has no effect in the game though. + - After the 3 ports are read, when "Cabinet" is set to "Cocktail" and its player 2 turn, player 2 inputs + are "copied" into player 1 ones (code at 0x0fd2 : start reading inputs). + +3b) 'armorcar2' + + - When IN1 bit 2 is ON when reseting the game, you enter sort of inputs "test mode". + You'll notice that there is some leftover code from 'moonwar' as you can see 2 (muxed) PORT A + (and there are still writes to IN2 bit 4). This has no effect in the game though. + As this bit is marked as "unused" (see below why), you can never access to this "test mode". + - IN2 bit 3 has no real effect in this set : even if contents of 0x8627 is updated each time player changes, + screen flipping (0xa806 and 0xa807) is always set to "normal" (0x00 * 2) due to code at 0x0598, there is a + missing call to 0x0abf at 0x0a8c (there is even a 'ret' for call from 0x15aa), and there is no code to "copy" + player 2 inputs into player 1 ones (code at 0x0fb2 : start reading inputs). + There is still a leftover from 'armorcar' code, so this bit affects display (how ?) when IN2 bit 3 is ON + and it is player 2 turn (code at 0x0b66 is the same as the one at 0x0b87 in 'armorcar'). + +4) 'tazmania' + + - Press P1 BUTTON2 when reseting the game to enter sort of inputs "test mode". + - After the 3 ports are read, when "Cabinet" is set to "Cocktail" and its player 2 turn, player 2 inputs + are "copied" into player 1 ones (code at 0x124e : start reading inputs). + - When "Cabinet" is set to "Upright", press any player 2 joystick direction to end current level + (code at 0x38dd). This trick does NOT work in bonus rooms though. + +5) 'anteater' + + - Press P1 BUTTON1 when reseting the game to enter sort of inputs "test mode". + - IN2 bit 3 has no effect in this set : even if contents of 0x86c4 is updated each time player changes, + screen flipping (0xa806 and 0xa807) is always reset to "normal" (0x00 * 2) after possible screen inversion + due to code at 0x05c7, and there is no code to "copy" player 2 inputs into player 1 ones (code at 0x0f7a : + start reading inputs). + +6) 'calipso' + + - Press P1 BUTTON1 when reseting the game to enter sort of inputs "test mode". + - Press P1 BUTTON1 to start a 1 player game or press P2 BUTTON1 to start a 2 players game ("Team-Play"). + - IN2 bit 3 has no effect in this set : even if there is code to "copy" player 2 inputs into player 1 ones + (code at 0x1448 : start reading inputs), contents of 0x8669 is always set to 0x01 regardless of number players + and is NEVER updated (there is even no code for this). Furthermore, the screen flipping routine forces the + screen to be "normal" ([0xa806] = [0xa807] = 0x00) because of the 'jr' instruction at 0x2988. + It's possible that there is a cocktail version of the game, but I'm not really convinced about it. + +7) 'losttomb' and clones + +7a) 'losttomb' + + - Press P1 right joystick UP when reseting the game to enter sort of inputs "test mode". + - There is no "Cabinet" Dip Switch for this game and no possible muxed input for a 2nd player. + Furthermore, the routine at 0x254b is NEVER called, so the screen NEVER flips ! + - The routine that reads inputs (code at 0x0ef4) behaves differently if you are in "attract mode" or not : + * when playing ([0x865f] = 0x00), it reads the 3 inputs ports + * when in "attract mode" ([0x865f] = 0xff), it only reads IN0 (to get status of COINn and STARTn) + and IN1 (to get the status of the "Lives" Dip Switch), and IN2 is completely ignored + The side effect of such thing is that the status of the "Demo Sounds" Dip Switch will be taken into + consideration only after a game has been played (for example, the game will always be silenced in + "attract mode" after resetting the machine because 0x00 is stored at 0x8613 during initialisation). + - When in "Free Play" mode, you only 3 lives at start. + +7b) 'losttombh' + + - The only difference with 'losttomb' is not in code but in data : + + Z:\MAME\data>fc /B 2h-easy lthard + Comparaison des fichiers 2h-easy et LTHARD + 00000399: 0A 0B + 0000039E: 0D 11 + 000003A3: 0F 14 + 000003A8: 13 19 + 000003AD: 15 1A + 000003B2: 18 1B + 000003B7: 1A 1C + 000003BC: 1B 1D + 000003C1: 1C 1E + 000003C6: 1D 1F + 000003CB: 1E 20 + 000003D0: 1F 21 + 000003D5: 20 22 + 000003D9: 03 05 + 000003E6: 0E 10 + 000003F0: 12 15 + 000003FD: 14 17 + 00000409: 0E 10 + 00000415: 0E 10 + 0000099B: AA 76 altered value to please the checksum routine + + So the game is harder, but it has the same ingame bugs as 'losttomb'. + +8) 'spdcoin' + + - Press START1 or START2 when reseting the game to enter sort of inputs "test mode" (in fact, only IN0 is tested). + Press BOTH START1 and START2 to exit from it. + - Press START1 + START2 + P1 joystick LEFT when reseting the game to display some statistics (code at 0x0226). + Release BOTH START1 and START2 to exit this screen. + +9) 'superbon' + + - This game is heavily based on 'losttomb', so not surprisingly is the code similar. + - The main difference in terms of gameplay is that you only have 1 joystick to control your character + and that you shoot in the direction you are running unless you press the "HOLD" button. + - There are no tests at startup and it's not possible to enter sort of inputs "test mode" (even if code exists) + by pressing P1 joystick UP because of 'jump' instruction at 0x007d. If you try to check the ROMS, you'll + notice that they have the same name as in 'losttomb' and that they fail the checksum routines. + - There is no "Cabinet" Dip Switch for this game and no possible muxed input for a 2nd player. + Furthermore, the routine at 0x2a48 is NEVER called, so the screen NEVER flips ! + - The routine that reads inputs (code at 0x0eb7) behaves differently if you are in "attract mode" or not : + * when playing ([0x8667] = 0x00), it reads the 3 inputs ports + * when in "attract mode" ([0x8667] = 0xff), it only reads IN0 (to get status of COINn and STARTn) + and IN1 (to get the status of the "Lives" Dip Switch), and IN2 is completely ignored + The side effect of such thing is that the status of the "Demo Sounds" Dip Switch will be taken into + consideration only after a game has been played (for example, the game will always be silenced in + "attract mode" after resetting the machine because 0x00 is stored at 0x8613 during initialisation). + - When in "Free Play" mode, you only 3 lives at start. + + + + TO DO : ------- @@ -1091,28 +1279,9 @@ static WRITE8_DEVICE_HANDLER( moonwar_port_select_w ) } -static READ8_DEVICE_HANDLER( moonwar_input_port_0_r ) -{ - // see http://www.cityofberwyn.com/schematics/stern/MoonWar_opto.tiff for schematic - // I.e. a 74ls161 counts from 0 to 15 which is the absolute number of bars passed on the quadrature - signed char dialread = (moonwar_port_select ? input_port_read(device->machine, "IN3") : input_port_read(device->machine, "IN4")); - static int counter_74ls161 = 0; - static int direction = 0; - UINT8 ret; - UINT8 buttons = (input_port_read(device->machine,"IN0")&0xe0); - if (dialread < 0) direction = 0; - else if (dialread > 0) direction = 0x10; - counter_74ls161 += abs(dialread); - counter_74ls161 &= 0xf; - ret = counter_74ls161 | direction | buttons; - //fprintf(stderr, "dialread1: %02x, counter_74ls161: %02x, spinner ret is %02x\n", dialread, counter_74ls161, ret); - return ret; -} - - static const ppi8255_interface moonwar_ppi8255_0_intf = { - DEVCB_HANDLER(moonwar_input_port_0_r), /* Port A read */ + DEVCB_INPUT_PORT("IN0"), /* Port A read */ DEVCB_INPUT_PORT("IN1"), /* Port B read */ DEVCB_INPUT_PORT("IN2"), /* Port C read */ DEVCB_NULL, /* Port A write */ diff --git a/src/mame/drivers/galdrvr.c b/src/mame/drivers/galdrvr.c index 0afd0fdf5fc..6ff09401589 100644 --- a/src/mame/drivers/galdrvr.c +++ b/src/mame/drivers/galdrvr.c @@ -1159,6 +1159,69 @@ static INPUT_PORTS_START( moonal2 ) INPUT_PORTS_END +static INPUT_PORTS_START( tdpgal ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + 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, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN2") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + 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, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + static INPUT_PORTS_START( skybase ) PORT_INCLUDE(mooncrst) @@ -2230,61 +2293,395 @@ static INPUT_PORTS_START( sfx ) INPUT_PORTS_END +/* verified from Z80 code */ static INPUT_PORTS_START( scobra ) PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* see notes */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Allow_Continue ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) + PORT_DIPSETTING( 0x01, "4 Times" ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) /* see notes */ PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x06, DEF_STR( 4C_3C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "1 Coin/99 Credits" ) + PORT_DIPSETTING( 0x00, "99 Credits" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN3") /* need for some PPI accesses */ PORT_BIT( 0xff, 0x00, IPT_UNUSED ) INPUT_PORTS_END - +/* verified from Z80 code */ static INPUT_PORTS_START( scobras ) PORT_INCLUDE(scobra) PORT_MODIFY("IN1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x01, "255 Times" ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x02, "5" ) INPUT_PORTS_END +static CUSTOM_INPUT( moonwar_dial_r ) +{ + static const char *const dialname[2] = { "P1_DIAL", "P2_DIAL" }; + int p = (~moonwar_port_select >> 4) & 1; + + // see http://www.cityofberwyn.com/schematics/stern/MoonWar_opto.tiff for schematic + // I.e. a 74ls161 counts from 0 to 15 which is the absolute number of bars passed on the quadrature + + static int counter_74ls161[2] = {0, 0}; + static int direction[2] = {0, 0}; + signed char dialread = input_port_read(field->port->machine, dialname[p]); + + UINT8 ret; + + if (dialread < 0) direction[p] = 0x00; + else if (dialread > 0) direction[p] = 0x10; + + counter_74ls161[p] += abs(dialread); + counter_74ls161[p] &= 0xf; + + ret = counter_74ls161[p] | direction[p]; + //fprintf(stderr, "dialread1: %02x, counter_74ls161: %02x, spinner ret is %02x\n", dialread, counter_74ls161[p], ret); + + return ret; +} + +/* verified from Z80 code */ +static INPUT_PORTS_START( moonwar ) + PORT_START("IN0") + PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(moonwar_dial_r, (void *)0) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL // cocktail: p2 shield + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPSETTING( 0x02, "5" ) + PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) /* see notes */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x08) // cocktail: p2 thrust + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x00) // upright: p1&p2 hyperflip + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) // both: p1(upright: &p2) shield + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // both: p1(upright: &p2) thrust + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) // both: p1(upright: &p2) fire + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL // cocktail: p2 fire + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) /* output bits */ + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("P1_DIAL") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_REVERSE PORT_RESET PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x08) // cocktail: dial is reversed + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x00) // upright: dial works normally + + PORT_START("P2_DIAL") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_COCKTAIL PORT_REVERSE // cocktail: dial is reversed +INPUT_PORTS_END + +/* verified from Z80 code */ +static INPUT_PORTS_START( moonwara ) + PORT_INCLUDE(moonwar) + + PORT_MODIFY("IN2") + PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x00, "A 1/1 B 4/1" ) + PORT_DIPSETTING( 0x02, "A 1/2 B 3/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 1/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 2/1" ) + + PORT_MODIFY("P1_DIAL") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET // both: p1 dial works normally, p2 dial is reversed, both share same port + + PORT_MODIFY("P2_DIAL") /* doesn't actually work due to bug in game code */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_COCKTAIL +INPUT_PORTS_END + + +/* verified from Z80 code */ +static INPUT_PORTS_START( armorcar ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +/* verified from Z80 code */ +static INPUT_PORTS_START( armorcar2 ) + PORT_INCLUDE(armorcar) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* see notes */ + + PORT_MODIFY("IN1") + PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED ) /* see notes */ + + PORT_MODIFY("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* see notes */ + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) /* see notes */ +INPUT_PORTS_END + + +/* verified from Z80 code */ +static INPUT_PORTS_START( tazmania ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) + 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_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + 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_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + +/* verified from Z80 code */ +static INPUT_PORTS_START( anteater ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +// PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL +// PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL +// PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL +// PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL +// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x7c, IP_ACTIVE_LOW, IPT_UNUSED ) /* see notes */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) +// PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) +// PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) +// PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) /* see notes */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0xb0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + +/* verified from Z80 code */ +static INPUT_PORTS_START( calipso ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* also START2 - see notes */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY 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_BUTTON1 ) PORT_PLAYER(1) /* also START1 - see notes */ + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) +// PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) +// PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) +// PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) /* see notes */ + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + +/* verified from Z80 code */ +static INPUT_PORTS_START( losttomb ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x02, "5" ) + PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) /* see notes */ + PORT_DIPSETTING( 0x00, "Invulnerability (Cheat)") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* "WHIP" */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x02, "A 1/1 B 1/1" ) + PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) + PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) + PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) ) /* see notes */ + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + +/* verified from Z80 code - IN2 bit 1 still needs to be understood */ static INPUT_PORTS_START( spdcoin ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -2297,448 +2694,47 @@ static INPUT_PORTS_START( spdcoin ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x00, "Freeze" ) /* Dip Sw #2 */ + PORT_DIPNAME( 0x01, 0x00, "Freeze" ) /* Dip Sw #2 */ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Free_Play ) ) /* Dip Sw #1 */ + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Free_Play ) ) /* Dip Sw #1 */ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) /* Dip Sw #5 - Check code at 0x0569 */ + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) /* Dip Sw #5 - Check code at 0x0569 */ PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) /* Dip Sw #4 */ + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) /* Dip Sw #4 */ PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) /* Dip Sw #3 */ + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) /* Dip Sw #3 */ PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x00, "5" ) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -/* cocktail mode is N/A */ +/* verified from Z80 code */ static INPUT_PORTS_START( superbon ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) - 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_JOYSTICK_RIGHT) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_INCLUDE(losttomb) - PORT_START("IN1") - PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) - PORT_DIPSETTING( 0x00, "Invulnerability (Cheat)") - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) - 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_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("IN2") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) - PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) - PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - 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, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) -INPUT_PORTS_END - - -/* cocktail mode is N/A */ -static INPUT_PORTS_START( losttomb ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) - PORT_DIPSETTING( 0x00, "Invulnerability (Cheat)") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_DIPUNKNOWN( 0x80, 0x00 ) - - PORT_START("IN2") - PORT_DIPUNKNOWN( 0x01, 0x00 ) - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "A 1/2 B 2/1" ) - PORT_DIPSETTING( 0x04, "A 1/3 B 3/1" ) - PORT_DIPSETTING( 0x06, "A 1/4 B 4/1" ) - PORT_DIPUNKNOWN( 0x08, 0x00 ) - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( armorcar ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "Coin A 1/2 Coin B 2/1" ) - PORT_DIPSETTING( 0x04, "Coin A 1/3 Coin B 3/1" ) - PORT_DIPSETTING( 0x06, "Coin A 1/4 Coin B 4/1" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( tazmania ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_MODIFY("IN0") + 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_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - 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_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "Coin A 1/2 Coin B 2/1" ) - PORT_DIPSETTING( 0x04, "Coin A 1/3 Coin B 3/1" ) - PORT_DIPSETTING( 0x06, "Coin A 1/4 Coin B 4/1" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) + PORT_MODIFY("IN1") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* "HOLD" */ + PORT_BIT( 0x34, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -/* cocktail mode not working due to bug in game code */ -static INPUT_PORTS_START( anteater ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "Coin A 1/2 Coin B 2/1" ) - PORT_DIPSETTING( 0x04, "Coin A 1/3 Coin B 3/1" ) - PORT_DIPSETTING( 0x06, "Coin A 1/4 Coin B 4/1" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) -INPUT_PORTS_END - - -/* cocktail mode is N/A */ -static INPUT_PORTS_START( calipso ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - 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_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - 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_BUTTON1 ) - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x08, 0x08, "Cabinet (Not Supported)" ) - PORT_DIPSETTING( 0x08, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - 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("IN3") /* need for some PPI accesses */ - PORT_BIT( 0xff, 0x00, IPT_UNUSED ) -INPUT_PORTS_END - -// Note that in moon war, when in cocktail mode, NEITHER player seems to have a hyperflip button? Can someone check the code to see if this is true? -static INPUT_PORTS_START( moonwar_common ) - PORT_START("IN0") - PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_SPECIAL ) /* the spinner */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL // cocktail: p2 shield - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x08) // cocktail: p2 thrust - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x00) // upright: p1&p2 hyperflip - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) // both: p1(upright: &p2) shield - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // both: p1(upright: &p2) thrust - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) // both: p1(upright: &p2) fire -INPUT_PORTS_END - - -static INPUT_PORTS_START( moonwar ) - PORT_INCLUDE( moonwar_common ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL // cocktail: p2 fire - PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) /* output bits */ - - PORT_START("IN3") /* IN3/4 - dummy ports for the dial */ - - PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_REVERSE PORT_RESET PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x08) // cocktail: dial is reversed - PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_CONDITION("IN2", 0x08, PORTCOND_EQUALS, 0x00) // upright: dial works normally - - PORT_START("IN4") - PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_COCKTAIL PORT_REVERSE // cocktail: dial is reversed -INPUT_PORTS_END - -/* same as above, but coinage is different */ -static INPUT_PORTS_START( moonwara ) - PORT_INCLUDE( moonwar_common ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL // cocktail: p2 fire - PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) /* output bits */ - - PORT_START("IN3") /* IN3/4 - dummy ports for the dial */ - PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET // both: p1 dial works normally, p2 dial is reversed, both share same port - - PORT_START("IN4") /* doesn't actually work due to bug in game code */ - PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET PORT_COCKTAIL -INPUT_PORTS_END - -static INPUT_PORTS_START( tdpgal ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - 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, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("IN2") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - 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, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - /************************************* * * ROM definitions @@ -3205,6 +3201,23 @@ ROM_START( exodus ) ROM_LOAD( "l06_prom.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) ROM_END +ROM_START( tdpgal ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "1.bin", 0x0000, 0x0800, CRC(7be819fe) SHA1(ab5a332914546692f9976e243daf3040f0d9952e) ) + ROM_LOAD( "2.bin", 0x0800, 0x0800, CRC(70c83a5e) SHA1(7b781b027c73d6c3901c6d27901f97fae61a352d) ) + ROM_LOAD( "3.bin", 0x1000, 0x0800, CRC(475eb5a0) SHA1(b7436873fd74aff3577540474420a1abaa2babcb) ) + ROM_LOAD( "4.bin", 0x1800, 0x0800, CRC(20a71943) SHA1(e196eea20bd0518545dcde61f2697a1d6f61568b) ) + ROM_LOAD( "5.bin", 0x2000, 0x0800, CRC(72c4f2dc) SHA1(30a9c69afd2c4da4a14363fc0b17b1e0da188927) ) + ROM_LOAD( "6.bin", 0x2800, 0x0800, CRC(fa4e2be4) SHA1(a30d43189660f8a1437faf87064fce28c9c760ad) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "8.bin", 0x0000, 0x0800, CRC(d701b1d4) SHA1(8f23ba3c9f42fedd8b8f38d321118a86889f00dc) ) + ROM_LOAD( "7.bin", 0x0800, 0x0800, CRC(3113bcfd) SHA1(e2792e5fe7d7f27bb329e3104dee3ca29d72ef48) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "bprom.bin", 0x0000, 0x0020, CRC(2b4cf53f) SHA1(8d7eb0453173b9821eea32419b67559bfb4578d0) ) +ROM_END + ROM_START( azurian ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -4355,6 +4368,60 @@ ROM_START( moonal2b ) ROM_END +/* + +The Pit (on Moon Quasar hardware) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Dumped by Andrew Welburn +on the sunny morning of 2/03/10 + +http://www.andys-arcade.com + +************************************************* +**Do not seperate this text file from the roms.** +************************************************* + +Nichibutsu Moon Quasar pcb largely unhacked, but +with an odd looking set of roms. One gfx rom +identifies itself as 'The Pit' so that is my only +guess at what the game actually is. + +Roms 1 through 8 read well in-circuit in the right +places in the memory map for moon cresta, +(through the fluke 9100) but the game does not +currently run. Roms dumped adn verified with no +anomolies. + +Rom 9 was placed on the through-socket and has +pins 20 and 18 (/E and A11 respectively) tied to +pin 5 of 8E (A14/A15/MREQ demux). This demux has +some patches, the trace to pin 13 is cut, and is +instead wired to pin 3. + +*/ + +ROM_START( thepitm ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "1.bin", 0x0000, 0x0800, CRC(0f78d6ea) SHA1(e224b2fb9b4a26295b03af720fa647d4488a1287) ) + ROM_LOAD( "2.bin", 0x0800, 0x0800, CRC(ebacc6eb) SHA1(8b73d96ebe8070fbbb16434aa6a30ec8985ddec6) ) + ROM_LOAD( "3.bin", 0x1000, 0x0800, CRC(14fd0706) SHA1(5d905d8272731c307dc9f96caf4973b28413198e) ) + ROM_LOAD( "4.bin", 0x1800, 0x0800, CRC(613e920f) SHA1(078c7f36ba0145fbbd24bdae4cb6b03c5c27c1cc) ) + ROM_LOAD( "5.bin", 0x2000, 0x0800, CRC(5a791f3f) SHA1(166f07f7fe260e53e611784976792638a25485c1) ) + ROM_LOAD( "6.bin", 0x2800, 0x0800, CRC(0bb37f51) SHA1(32e31678388bad048c829bd43a18dc4e24869840) ) + ROM_LOAD( "7.bin", 0x3000, 0x0800, CRC(4dfdec6f) SHA1(eb88a278860998c343f94e27c8c6c723cffb2dd9) ) + ROM_LOAD( "8.bin", 0x3800, 0x0800, CRC(a39a9189) SHA1(aacd54edca6bc7f7feacd651a0de57b3d9592aad) ) + ROM_LOAD( "9.bin", 0x4000, 0x0800, CRC(2eb90e07) SHA1(92678fc5cfeb7119ce27f042571daa831fa1dad5) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "1h.bin", 0x0000, 0x0800, CRC(00dce65f) SHA1(ba0cce484d1f8693a85b85e0689d107588df9043) ) + ROM_LOAD( "1k.bin", 0x1000, 0x0800, CRC(3ec0056e) SHA1(1dd19e7535ab9abd62b4b32663437f8e8acb91b5) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "6l.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) +ROM_END + + ROM_START( skybase ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "skybase.9a", 0x0000, 0x1000, CRC(845b87a5) SHA1(8a249c1ec921532cb1bb85ed7fec11396634ca38) ) @@ -5412,28 +5479,6 @@ ROM_START( scobra ) ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(9b87f90d) SHA1(d11ac5e4a6057301ea2a9cbb404c2b978eb4c1dc) ) ROM_END -ROM_START( scobras ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "scobra2c.bin", 0x0000, 0x1000, CRC(e15ade38) SHA1(21cf26d1781d133fa336d275d8a61d3f95d10b77) ) - ROM_LOAD( "scobra2e.bin", 0x1000, 0x1000, CRC(a270e44d) SHA1(8b7307af458b9cd3c45bb72b35e682d6d109ed01) ) - ROM_LOAD( "scobra2f.bin", 0x2000, 0x1000, CRC(bdd70346) SHA1(bda0dc5777233a86a3a0aceb6eded45145057ba8) ) - ROM_LOAD( "scobra2h.bin", 0x3000, 0x1000, CRC(dca5ec31) SHA1(50073d44ccef76a3c36c73a6ed4479127f2c98ee) ) - ROM_LOAD( "scobra2j.bin", 0x4000, 0x1000, CRC(0d8f6b6e) SHA1(0ca0096cd55cdb87d14cb7f4c7c7b853ec1661c7) ) - ROM_LOAD( "scobra2l.bin", 0x5000, 0x1000, CRC(6f80f3a9) SHA1(817d212454c5eb16c5d7471d2ccefc4f8708d57f) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "epr1275.5c", 0x0000, 0x0800, CRC(deeb0dd3) SHA1(b815a586f05361b75078d58f1fddfdb36f9d8fae) ) - ROM_LOAD( "epr1276.5d", 0x0800, 0x0800, CRC(872c1a74) SHA1(20f05bf398ad2690f5ba4e4158ad62aeec226413) ) - ROM_LOAD( "epr1277.5e", 0x1000, 0x0800, CRC(ccd7a110) SHA1(5a247e360530be0f94c90fcc7d0ce628d460449f) ) - - ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "epr1274.5h", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) ) - ROM_LOAD( "epr1273.5f", 0x0800, 0x0800, CRC(a96316d3) SHA1(9de0e94932e91dc34aea7c81880bde6a486d103b) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(9b87f90d) SHA1(d11ac5e4a6057301ea2a9cbb404c2b978eb4c1dc) ) -ROM_END - ROM_START( scobrase ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "epr1265.2c", 0x0000, 0x1000, CRC(a0744b3f) SHA1(8949298a04f8ba8a82d5d84a7b012a0e7cff11df) ) @@ -5456,6 +5501,28 @@ ROM_START( scobrase ) ROM_LOAD( "pr1278.6e", 0x0000, 0x0020, CRC(fd35c561) SHA1(590f60beb443dd689c890c37cc100e0b936bf8c9) ) ROM_END +ROM_START( scobras ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "scobra2c.bin", 0x0000, 0x1000, CRC(e15ade38) SHA1(21cf26d1781d133fa336d275d8a61d3f95d10b77) ) + ROM_LOAD( "scobra2e.bin", 0x1000, 0x1000, CRC(a270e44d) SHA1(8b7307af458b9cd3c45bb72b35e682d6d109ed01) ) + ROM_LOAD( "scobra2f.bin", 0x2000, 0x1000, CRC(bdd70346) SHA1(bda0dc5777233a86a3a0aceb6eded45145057ba8) ) + ROM_LOAD( "scobra2h.bin", 0x3000, 0x1000, CRC(dca5ec31) SHA1(50073d44ccef76a3c36c73a6ed4479127f2c98ee) ) + ROM_LOAD( "scobra2j.bin", 0x4000, 0x1000, CRC(0d8f6b6e) SHA1(0ca0096cd55cdb87d14cb7f4c7c7b853ec1661c7) ) + ROM_LOAD( "scobra2l.bin", 0x5000, 0x1000, CRC(6f80f3a9) SHA1(817d212454c5eb16c5d7471d2ccefc4f8708d57f) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "epr1275.5c", 0x0000, 0x0800, CRC(deeb0dd3) SHA1(b815a586f05361b75078d58f1fddfdb36f9d8fae) ) + ROM_LOAD( "epr1276.5d", 0x0800, 0x0800, CRC(872c1a74) SHA1(20f05bf398ad2690f5ba4e4158ad62aeec226413) ) + ROM_LOAD( "epr1277.5e", 0x1000, 0x0800, CRC(ccd7a110) SHA1(5a247e360530be0f94c90fcc7d0ce628d460449f) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "epr1274.5h", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) ) + ROM_LOAD( "epr1273.5f", 0x0800, 0x0800, CRC(a96316d3) SHA1(9de0e94932e91dc34aea7c81880bde6a486d103b) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(9b87f90d) SHA1(d11ac5e4a6057301ea2a9cbb404c2b978eb4c1dc) ) +ROM_END + ROM_START( scobrab ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "vid_2c.bin", 0x0000, 0x0800, CRC(aeddf391) SHA1(87632469e943cfe38a9676de5e8ed839a63c5da2) ) @@ -5467,9 +5534,9 @@ ROM_START( scobrab ) ROM_LOAD( "scobra2l.bin", 0x5000, 0x1000, CRC(6f80f3a9) SHA1(817d212454c5eb16c5d7471d2ccefc4f8708d57f) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "snd_5c.bin", 0x0000, 0x0800, CRC(deeb0dd3) SHA1(b815a586f05361b75078d58f1fddfdb36f9d8fae) ) - ROM_LOAD( "snd_5d.bin", 0x0800, 0x0800, CRC(872c1a74) SHA1(20f05bf398ad2690f5ba4e4158ad62aeec226413) ) - ROM_LOAD( "snd_5e.bin", 0x1000, 0x0800, CRC(ccd7a110) SHA1(5a247e360530be0f94c90fcc7d0ce628d460449f) ) + ROM_LOAD( "epr1275.5c", 0x0000, 0x0800, CRC(deeb0dd3) SHA1(b815a586f05361b75078d58f1fddfdb36f9d8fae) ) /* snd_5c.bin */ + ROM_LOAD( "epr1276.5d", 0x0800, 0x0800, CRC(872c1a74) SHA1(20f05bf398ad2690f5ba4e4158ad62aeec226413) ) /* snd_5d.bin */ + ROM_LOAD( "epr1277.5e", 0x1000, 0x0800, CRC(ccd7a110) SHA1(5a247e360530be0f94c90fcc7d0ce628d460449f) ) /* snd_5e.bin */ ROM_REGION( 0x1000, "gfx1", 0 ) ROM_LOAD( "epr1274.5h", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) ) @@ -5502,55 +5569,43 @@ ROM_START( suprheli ) ROM_LOAD( "k.6e", 0x0000, 0x0020, CRC(fd35c561) SHA1(590f60beb443dd689c890c37cc100e0b936bf8c9) ) /* this dump matches the prom from scobrase, it was labeled "K" with a marker here at 6E */ ROM_END -/* - Lost Tomb - CPU/Sound Board: A969 - Video Board: A2048 -*/ - -ROM_START( losttomb ) +ROM_START( moonwar ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "2c", 0x0000, 0x1000, CRC(d6176d2c) SHA1(bc2bf63ee8d3e376f155d218704ceb5adcdf8e54) ) - ROM_LOAD( "2e", 0x1000, 0x1000, CRC(a5f55f4a) SHA1(3609fc2b15b6856e81738bbd370250735dba694d) ) - ROM_LOAD( "2f", 0x2000, 0x1000, CRC(0169fa3c) SHA1(2c06b1deca6c80d067032bfc2386da6ab0111e5f) ) - ROM_LOAD( "2h-easy", 0x3000, 0x1000, CRC(054481b6) SHA1(b0f5d19af0336883e4d9813e58a75c176a63a987) ) - ROM_LOAD( "2j", 0x4000, 0x1000, CRC(249ee040) SHA1(7297039e95e67220fa3e75fc50635f4df4c46a86) ) - ROM_LOAD( "2l", 0x5000, 0x1000, CRC(c7d2e608) SHA1(8aabecabd1dcd6833fb581e4571d71a680e6563a) ) - ROM_LOAD( "2m", 0x6000, 0x1000, CRC(bc4bc5b1) SHA1(95ffa72e57d1da10ddeda4d9333c9e0a2fb33e82) ) + ROM_LOAD( "mw2.2c", 0x0000, 0x1000, CRC(7c11b4d9) SHA1(a27bdff6ce728647ec811df843ac235c32c293d6) ) + ROM_LOAD( "mw2.2e", 0x1000, 0x1000, CRC(1b6362be) SHA1(2fbd95869146adcc0c8be1df653251fda8849e8e) ) + ROM_LOAD( "mw2.2f", 0x2000, 0x1000, CRC(4fd8ba4b) SHA1(3da784267a96d05f66b00626a22cb3f06211d202) ) + ROM_LOAD( "mw2.2h", 0x3000, 0x1000, CRC(56879f0d) SHA1(d1e9932863aebc5761e71fca8d24f3c400e1250d) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "5c", 0x0000, 0x0800, CRC(b899be2a) SHA1(9b343a682531255104db61177a43ad933c3af34e) ) - ROM_LOAD( "5d", 0x0800, 0x0800, CRC(6907af31) SHA1(8496c8db5342129d81381eec196facbca45bca77) ) + ROM_LOAD( "mw2.5c", 0x0000, 0x0800, CRC(c26231eb) SHA1(5b19edfaefe1a535059311d067ea53405879d627) ) + ROM_LOAD( "mw2.5d", 0x0800, 0x0800, CRC(bb48a646) SHA1(cf51202d16b03bbed12ff24501be68683f28c992) ) ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "5f", 0x0000, 0x0800, CRC(61f137e7) SHA1(8bff09bc29fa829e21e6b36f7b3f67f19f6bbb26) ) - ROM_LOAD( "5h", 0x0800, 0x0800, CRC(5581de5f) SHA1(763dacb0d2183c159e7f1f04c7ecb1182da18abf) ) + ROM_LOAD( "mw2.5f", 0x0000, 0x0800, CRC(c5fa1aa0) SHA1(6c6b5b2ce5de278ff436d3e7252ece5b086cc41d) ) + ROM_LOAD( "mw2.5h", 0x0800, 0x0800, CRC(a6ccc652) SHA1(286b3dc1f3a7da3ac66664e774b441ef075745f1) ) ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "ltprom", 0x0000, 0x0020, CRC(1108b816) SHA1(49fdb08f8f31fefa2f3dca3d3455318cb21847a3) ) + ROM_LOAD( "mw2.clr", 0x0000, 0x0020, CRC(99614c6c) SHA1(f068985f3c5e0cd88551a02c32f9baeabfd50241) ) ROM_END -ROM_START( losttombh ) +ROM_START( moonwara ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "2c", 0x0000, 0x1000, CRC(d6176d2c) SHA1(bc2bf63ee8d3e376f155d218704ceb5adcdf8e54) ) - ROM_LOAD( "2e", 0x1000, 0x1000, CRC(a5f55f4a) SHA1(3609fc2b15b6856e81738bbd370250735dba694d) ) - ROM_LOAD( "2f", 0x2000, 0x1000, CRC(0169fa3c) SHA1(2c06b1deca6c80d067032bfc2386da6ab0111e5f) ) - ROM_LOAD( "lthard", 0x3000, 0x1000, CRC(e32cbf0e) SHA1(c4a63e01fad7bd450def5c4412690d4bb8d12691) ) - ROM_LOAD( "2j", 0x4000, 0x1000, CRC(249ee040) SHA1(7297039e95e67220fa3e75fc50635f4df4c46a86) ) - ROM_LOAD( "2l", 0x5000, 0x1000, CRC(c7d2e608) SHA1(8aabecabd1dcd6833fb581e4571d71a680e6563a) ) - ROM_LOAD( "2m", 0x6000, 0x1000, CRC(bc4bc5b1) SHA1(95ffa72e57d1da10ddeda4d9333c9e0a2fb33e82) ) + ROM_LOAD( "2c", 0x0000, 0x1000, CRC(bc20b734) SHA1(c6fe550987d0052979aad43c67aa1b9248049669) ) + ROM_LOAD( "2e", 0x1000, 0x1000, CRC(db6ffec2) SHA1(0fcd55b1e415e2e7041d10778052a235251f85fe) ) + ROM_LOAD( "2f", 0x2000, 0x1000, CRC(378931b8) SHA1(663f1eea9b0e8dc38de818df66c5211dac41c33b) ) + ROM_LOAD( "2h", 0x3000, 0x1000, CRC(031dbc2c) SHA1(5f2ca8b8763398bf161ee0c2c748a12d36cb40ec) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "5c", 0x0000, 0x0800, CRC(b899be2a) SHA1(9b343a682531255104db61177a43ad933c3af34e) ) - ROM_LOAD( "5d", 0x0800, 0x0800, CRC(6907af31) SHA1(8496c8db5342129d81381eec196facbca45bca77) ) + ROM_LOAD( "mw2.5c", 0x0000, 0x0800, CRC(c26231eb) SHA1(5b19edfaefe1a535059311d067ea53405879d627) ) + ROM_LOAD( "mw2.5d", 0x0800, 0x0800, CRC(bb48a646) SHA1(cf51202d16b03bbed12ff24501be68683f28c992) ) ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "5f", 0x0000, 0x0800, CRC(61f137e7) SHA1(8bff09bc29fa829e21e6b36f7b3f67f19f6bbb26) ) - ROM_LOAD( "5h", 0x0800, 0x0800, CRC(5581de5f) SHA1(763dacb0d2183c159e7f1f04c7ecb1182da18abf) ) + ROM_LOAD( "mw2.5f", 0x0000, 0x0800, CRC(c5fa1aa0) SHA1(6c6b5b2ce5de278ff436d3e7252ece5b086cc41d) ) + ROM_LOAD( "mw2.5h", 0x0800, 0x0800, CRC(a6ccc652) SHA1(286b3dc1f3a7da3ac66664e774b441ef075745f1) ) ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "ltprom", 0x0000, 0x0020, CRC(1108b816) SHA1(49fdb08f8f31fefa2f3dca3d3455318cb21847a3) ) + ROM_LOAD( "moonwara.clr", 0x0000, 0x0020, CRC(f58d4f58) SHA1(12a80d1edf3c80dafa0e1e3622d2a03224b62f14) ) /* olive, instead of white */ ROM_END @@ -5636,6 +5691,80 @@ ROM_START( anteater ) ROM_END +ROM_START( calipso ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "calipso.2c", 0x0000, 0x1000, CRC(0fcb703c) SHA1(2bb096f114911973afdf3088c860c9566df06f60) ) + ROM_LOAD( "calipso.2e", 0x1000, 0x1000, CRC(c6622f14) SHA1(475164aed703a97275ff285ecaec9d8fd4fe723b) ) + ROM_LOAD( "calipso.2f", 0x2000, 0x1000, CRC(7bacbaba) SHA1(d321d6d09c689123eb1e5d758d95ccecec225252) ) + ROM_LOAD( "calipso.2h", 0x3000, 0x1000, CRC(a3a8111b) SHA1(3d9500c676563ebfc27aebb07716e6a966f00c35) ) + ROM_LOAD( "calipso.2j", 0x4000, 0x1000, CRC(fcbd7b9e) SHA1(5cc1edcc8b9867bb7849c8d97d1096bb6464f562) ) + ROM_LOAD( "calipso.2l", 0x5000, 0x1000, CRC(f7630cab) SHA1(482ee91cccd8a7c5768a1d6a9772d797769fe2dc) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound code */ + ROM_LOAD( "calipso.5c", 0x0000, 0x0800, CRC(9cbc65ab) SHA1(b4ce04d18f9536c0ddd2f9c15edda75570e750e5) ) + ROM_LOAD( "calipso.5d", 0x0800, 0x0800, CRC(a225ee3b) SHA1(dba111f89851c69fb6fce16219cb2b0cb3294c15) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "calipso.5f", 0x0000, 0x2000, CRC(fd4252e9) SHA1(881b988cdc9b7913f577573f8a15af7a7c7cc67f) ) + ROM_LOAD( "calipso.5h", 0x2000, 0x2000, CRC(1663a73a) SHA1(95b6ed25b656afdfb70fac35efa2e005185e4343) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "calipso.clr", 0x0000, 0x0020, CRC(01165832) SHA1(bfef0459492dbd5febf3030916b6438eb6be71de) ) +ROM_END + + +/* + Lost Tomb + + CPU/Sound Board: A969 + Video Board: A2048 +*/ + +ROM_START( losttomb ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "2c", 0x0000, 0x1000, CRC(d6176d2c) SHA1(bc2bf63ee8d3e376f155d218704ceb5adcdf8e54) ) + ROM_LOAD( "2e", 0x1000, 0x1000, CRC(a5f55f4a) SHA1(3609fc2b15b6856e81738bbd370250735dba694d) ) + ROM_LOAD( "2f", 0x2000, 0x1000, CRC(0169fa3c) SHA1(2c06b1deca6c80d067032bfc2386da6ab0111e5f) ) + ROM_LOAD( "2h-easy", 0x3000, 0x1000, CRC(054481b6) SHA1(b0f5d19af0336883e4d9813e58a75c176a63a987) ) + ROM_LOAD( "2j", 0x4000, 0x1000, CRC(249ee040) SHA1(7297039e95e67220fa3e75fc50635f4df4c46a86) ) + ROM_LOAD( "2l", 0x5000, 0x1000, CRC(c7d2e608) SHA1(8aabecabd1dcd6833fb581e4571d71a680e6563a) ) + ROM_LOAD( "2m", 0x6000, 0x1000, CRC(bc4bc5b1) SHA1(95ffa72e57d1da10ddeda4d9333c9e0a2fb33e82) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "5c", 0x0000, 0x0800, CRC(b899be2a) SHA1(9b343a682531255104db61177a43ad933c3af34e) ) + ROM_LOAD( "5d", 0x0800, 0x0800, CRC(6907af31) SHA1(8496c8db5342129d81381eec196facbca45bca77) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "5f", 0x0000, 0x0800, CRC(61f137e7) SHA1(8bff09bc29fa829e21e6b36f7b3f67f19f6bbb26) ) + ROM_LOAD( "5h", 0x0800, 0x0800, CRC(5581de5f) SHA1(763dacb0d2183c159e7f1f04c7ecb1182da18abf) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "ltprom", 0x0000, 0x0020, CRC(1108b816) SHA1(49fdb08f8f31fefa2f3dca3d3455318cb21847a3) ) +ROM_END + +ROM_START( losttombh ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "2c", 0x0000, 0x1000, CRC(d6176d2c) SHA1(bc2bf63ee8d3e376f155d218704ceb5adcdf8e54) ) + ROM_LOAD( "2e", 0x1000, 0x1000, CRC(a5f55f4a) SHA1(3609fc2b15b6856e81738bbd370250735dba694d) ) + ROM_LOAD( "2f", 0x2000, 0x1000, CRC(0169fa3c) SHA1(2c06b1deca6c80d067032bfc2386da6ab0111e5f) ) + ROM_LOAD( "lthard", 0x3000, 0x1000, CRC(e32cbf0e) SHA1(c4a63e01fad7bd450def5c4412690d4bb8d12691) ) + ROM_LOAD( "2j", 0x4000, 0x1000, CRC(249ee040) SHA1(7297039e95e67220fa3e75fc50635f4df4c46a86) ) + ROM_LOAD( "2l", 0x5000, 0x1000, CRC(c7d2e608) SHA1(8aabecabd1dcd6833fb581e4571d71a680e6563a) ) + ROM_LOAD( "2m", 0x6000, 0x1000, CRC(bc4bc5b1) SHA1(95ffa72e57d1da10ddeda4d9333c9e0a2fb33e82) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "5c", 0x0000, 0x0800, CRC(b899be2a) SHA1(9b343a682531255104db61177a43ad933c3af34e) ) + ROM_LOAD( "5d", 0x0800, 0x0800, CRC(6907af31) SHA1(8496c8db5342129d81381eec196facbca45bca77) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "5f", 0x0000, 0x0800, CRC(61f137e7) SHA1(8bff09bc29fa829e21e6b36f7b3f67f19f6bbb26) ) + ROM_LOAD( "5h", 0x0800, 0x0800, CRC(5581de5f) SHA1(763dacb0d2183c159e7f1f04c7ecb1182da18abf) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "ltprom", 0x0000, 0x0020, CRC(1108b816) SHA1(49fdb08f8f31fefa2f3dca3d3455318cb21847a3) ) +ROM_END + + ROM_START( spdcoin ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "spdcoin.2c", 0x0000, 0x1000, CRC(65cf1e49) SHA1(a4570f0d7868fcdd378de3fd9e5346780afcf427) ) @@ -5682,136 +5811,6 @@ ROM_START( superbon ) ROM_END -ROM_START( calipso ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "calipso.2c", 0x0000, 0x1000, CRC(0fcb703c) SHA1(2bb096f114911973afdf3088c860c9566df06f60) ) - ROM_LOAD( "calipso.2e", 0x1000, 0x1000, CRC(c6622f14) SHA1(475164aed703a97275ff285ecaec9d8fd4fe723b) ) - ROM_LOAD( "calipso.2f", 0x2000, 0x1000, CRC(7bacbaba) SHA1(d321d6d09c689123eb1e5d758d95ccecec225252) ) - ROM_LOAD( "calipso.2h", 0x3000, 0x1000, CRC(a3a8111b) SHA1(3d9500c676563ebfc27aebb07716e6a966f00c35) ) - ROM_LOAD( "calipso.2j", 0x4000, 0x1000, CRC(fcbd7b9e) SHA1(5cc1edcc8b9867bb7849c8d97d1096bb6464f562) ) - ROM_LOAD( "calipso.2l", 0x5000, 0x1000, CRC(f7630cab) SHA1(482ee91cccd8a7c5768a1d6a9772d797769fe2dc) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound code */ - ROM_LOAD( "calipso.5c", 0x0000, 0x0800, CRC(9cbc65ab) SHA1(b4ce04d18f9536c0ddd2f9c15edda75570e750e5) ) - ROM_LOAD( "calipso.5d", 0x0800, 0x0800, CRC(a225ee3b) SHA1(dba111f89851c69fb6fce16219cb2b0cb3294c15) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "calipso.5f", 0x0000, 0x2000, CRC(fd4252e9) SHA1(881b988cdc9b7913f577573f8a15af7a7c7cc67f) ) - ROM_LOAD( "calipso.5h", 0x2000, 0x2000, CRC(1663a73a) SHA1(95b6ed25b656afdfb70fac35efa2e005185e4343) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "calipso.clr", 0x0000, 0x0020, CRC(01165832) SHA1(bfef0459492dbd5febf3030916b6438eb6be71de) ) -ROM_END - - -ROM_START( moonwar ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "mw2.2c", 0x0000, 0x1000, CRC(7c11b4d9) SHA1(a27bdff6ce728647ec811df843ac235c32c293d6) ) - ROM_LOAD( "mw2.2e", 0x1000, 0x1000, CRC(1b6362be) SHA1(2fbd95869146adcc0c8be1df653251fda8849e8e) ) - ROM_LOAD( "mw2.2f", 0x2000, 0x1000, CRC(4fd8ba4b) SHA1(3da784267a96d05f66b00626a22cb3f06211d202) ) - ROM_LOAD( "mw2.2h", 0x3000, 0x1000, CRC(56879f0d) SHA1(d1e9932863aebc5761e71fca8d24f3c400e1250d) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "mw2.5c", 0x0000, 0x0800, CRC(c26231eb) SHA1(5b19edfaefe1a535059311d067ea53405879d627) ) - ROM_LOAD( "mw2.5d", 0x0800, 0x0800, CRC(bb48a646) SHA1(cf51202d16b03bbed12ff24501be68683f28c992) ) - - ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "mw2.5f", 0x0000, 0x0800, CRC(c5fa1aa0) SHA1(6c6b5b2ce5de278ff436d3e7252ece5b086cc41d) ) - ROM_LOAD( "mw2.5h", 0x0800, 0x0800, CRC(a6ccc652) SHA1(286b3dc1f3a7da3ac66664e774b441ef075745f1) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "mw2.clr", 0x0000, 0x0020, CRC(99614c6c) SHA1(f068985f3c5e0cd88551a02c32f9baeabfd50241) ) -ROM_END - -ROM_START( moonwara ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "2c", 0x0000, 0x1000, CRC(bc20b734) SHA1(c6fe550987d0052979aad43c67aa1b9248049669) ) - ROM_LOAD( "2e", 0x1000, 0x1000, CRC(db6ffec2) SHA1(0fcd55b1e415e2e7041d10778052a235251f85fe) ) - ROM_LOAD( "2f", 0x2000, 0x1000, CRC(378931b8) SHA1(663f1eea9b0e8dc38de818df66c5211dac41c33b) ) - ROM_LOAD( "2h", 0x3000, 0x1000, CRC(031dbc2c) SHA1(5f2ca8b8763398bf161ee0c2c748a12d36cb40ec) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "mw2.5c", 0x0000, 0x0800, CRC(c26231eb) SHA1(5b19edfaefe1a535059311d067ea53405879d627) ) - ROM_LOAD( "mw2.5d", 0x0800, 0x0800, CRC(bb48a646) SHA1(cf51202d16b03bbed12ff24501be68683f28c992) ) - - ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "mw2.5f", 0x0000, 0x0800, CRC(c5fa1aa0) SHA1(6c6b5b2ce5de278ff436d3e7252ece5b086cc41d) ) - ROM_LOAD( "mw2.5h", 0x0800, 0x0800, CRC(a6ccc652) SHA1(286b3dc1f3a7da3ac66664e774b441ef075745f1) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "moonwara.clr", 0x0000, 0x0020, CRC(f58d4f58) SHA1(12a80d1edf3c80dafa0e1e3622d2a03224b62f14) ) /* olive, instead of white */ -ROM_END - - -ROM_START( tdpgal ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1.bin", 0x0000, 0x0800, CRC(7be819fe) SHA1(ab5a332914546692f9976e243daf3040f0d9952e) ) - ROM_LOAD( "2.bin", 0x0800, 0x0800, CRC(70c83a5e) SHA1(7b781b027c73d6c3901c6d27901f97fae61a352d) ) - ROM_LOAD( "3.bin", 0x1000, 0x0800, CRC(475eb5a0) SHA1(b7436873fd74aff3577540474420a1abaa2babcb) ) - ROM_LOAD( "4.bin", 0x1800, 0x0800, CRC(20a71943) SHA1(e196eea20bd0518545dcde61f2697a1d6f61568b) ) - ROM_LOAD( "5.bin", 0x2000, 0x0800, CRC(72c4f2dc) SHA1(30a9c69afd2c4da4a14363fc0b17b1e0da188927) ) - ROM_LOAD( "6.bin", 0x2800, 0x0800, CRC(fa4e2be4) SHA1(a30d43189660f8a1437faf87064fce28c9c760ad) ) - - ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "8.bin", 0x0000, 0x0800, CRC(d701b1d4) SHA1(8f23ba3c9f42fedd8b8f38d321118a86889f00dc) ) - ROM_LOAD( "7.bin", 0x0800, 0x0800, CRC(3113bcfd) SHA1(e2792e5fe7d7f27bb329e3104dee3ca29d72ef48) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "bprom.bin", 0x0000, 0x0020, CRC(2b4cf53f) SHA1(8d7eb0453173b9821eea32419b67559bfb4578d0) ) -ROM_END - -/* - -The Pit (on Moon Quasar hardware) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Dumped by Andrew Welburn -on the sunny morning of 2/03/10 - -http://www.andys-arcade.com - -************************************************* -**Do not seperate this text file from the roms.** -************************************************* - -Nichibutsu Moon Quasar pcb largely unhacked, but -with an odd looking set of roms. One gfx rom -identifies itself as 'The Pit' so that is my only -guess at what the game actually is. - -Roms 1 through 8 read well in-circuit in the right -places in the memory map for moon cresta, -(through the fluke 9100) but the game does not -currently run. Roms dumped adn verified with no -anomolies. - -Rom 9 was placed on the through-socket and has -pins 20 and 18 (/E and A11 respectively) tied to -pin 5 of 8E (A14/A15/MREQ demux). This demux has -some patches, the trace to pin 13 is cut, and is -instead wired to pin 3. - -*/ - -ROM_START( thepitm ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1.bin", 0x0000, 0x0800, CRC(0f78d6ea) SHA1(e224b2fb9b4a26295b03af720fa647d4488a1287) ) - ROM_LOAD( "2.bin", 0x0800, 0x0800, CRC(ebacc6eb) SHA1(8b73d96ebe8070fbbb16434aa6a30ec8985ddec6) ) - ROM_LOAD( "3.bin", 0x1000, 0x0800, CRC(14fd0706) SHA1(5d905d8272731c307dc9f96caf4973b28413198e) ) - ROM_LOAD( "4.bin", 0x1800, 0x0800, CRC(613e920f) SHA1(078c7f36ba0145fbbd24bdae4cb6b03c5c27c1cc) ) - ROM_LOAD( "5.bin", 0x2000, 0x0800, CRC(5a791f3f) SHA1(166f07f7fe260e53e611784976792638a25485c1) ) - ROM_LOAD( "6.bin", 0x2800, 0x0800, CRC(0bb37f51) SHA1(32e31678388bad048c829bd43a18dc4e24869840) ) - ROM_LOAD( "7.bin", 0x3000, 0x0800, CRC(4dfdec6f) SHA1(eb88a278860998c343f94e27c8c6c723cffb2dd9) ) - ROM_LOAD( "8.bin", 0x3800, 0x0800, CRC(a39a9189) SHA1(aacd54edca6bc7f7feacd651a0de57b3d9592aad) ) - ROM_LOAD( "9.bin", 0x4000, 0x0800, CRC(2eb90e07) SHA1(92678fc5cfeb7119ce27f042571daa831fa1dad5) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "1h.bin", 0x0000, 0x0800, CRC(00dce65f) SHA1(ba0cce484d1f8693a85b85e0689d107588df9043) ) - ROM_LOAD( "1k.bin", 0x1000, 0x0800, CRC(3ec0056e) SHA1(1dd19e7535ab9abd62b4b32663437f8e8acb91b5) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "6l.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) -ROM_END /************************************* * @@ -6021,29 +6020,30 @@ GAME( 1982, monsterz, 0, sfx, sfx, sfx, ORIENTATION_FLIP_X /* scobra */ -GAME( 1981, scobra, 0, scobra, scobra, scobra, ROT90, "Konami", "Super Cobra", GAME_SUPPORTS_SAVE ) -GAME( 1981, scobras, scobra, scobra, scobras, scobra, ROT90, "[Konami] (Stern license)", "Super Cobra (Stern)", GAME_SUPPORTS_SAVE ) -GAME( 1981, scobrase, scobra, scobra, scobras, scobra, ROT90, "[Konami] (Sega license)", "Super Cobra (Sega)", GAME_SUPPORTS_SAVE ) -GAME( 1981, scobrab, scobra, scobra, scobras, scobra, ROT90, "bootleg", "Super Cobra (bootleg)", GAME_SUPPORTS_SAVE ) -GAME( 1981, suprheli, scobra, scobra, scobras, scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1981, scobra, 0, scobra, scobra, scobra, ROT90, "Konami", "Super Cobra", GAME_SUPPORTS_SAVE ) +GAME( 1981, scobrase, scobra, scobra, scobra, scobra, ROT90, "[Konami] (Sega license)", "Super Cobra (Sega)", GAME_SUPPORTS_SAVE ) +GAME( 1981, scobras, scobra, scobra, scobras, scobra, ROT90, "[Konami] (Stern license)", "Super Cobra (Stern)", GAME_SUPPORTS_SAVE ) +GAME( 1981, scobrab, scobra, scobra, scobras, scobra, ROT90, "bootleg", "Super Cobra (bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1981, suprheli, scobra, scobra, scobras, scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", GAME_SUPPORTS_SAVE ) -GAME( 1982, losttomb, 0, scobra, losttomb, losttomb, ROT90, "Stern", "Lost Tomb (easy)", GAME_SUPPORTS_SAVE ) -GAME( 1982, losttombh,losttomb, scobra, losttomb, losttomb, ROT90, "Stern", "Lost Tomb (hard)", GAME_SUPPORTS_SAVE ) +GAME( 1981, moonwar, 0, moonwar, moonwar, moonwar, ROT90, "Stern", "Moonwar", GAME_SUPPORTS_SAVE ) +GAME( 1981, moonwara, moonwar, moonwar, moonwara, moonwar, ROT90, "Stern", "Moonwar (older)", GAME_SUPPORTS_SAVE ) -GAME( 1981, armorcar, 0, scobra, armorcar, scobra, ROT90, "Stern", "Armored Car (set 1)", GAME_SUPPORTS_SAVE ) -GAME( 1981, armorcar2,armorcar, scobra, armorcar, scobra, ROT90, "Stern", "Armored Car (set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1981, armorcar, 0, scobra, armorcar, scobra, ROT90, "Stern", "Armored Car (set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1981, armorcar2, armorcar, scobra, armorcar2, scobra, ROT90, "Stern", "Armored Car (set 2)", GAME_SUPPORTS_SAVE ) -GAME( 1982, tazmania, 0, scobra, tazmania, scobra, ROT90, "Stern", "Tazz-Mania (set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1982, tazmania, 0, scobra, tazmania, scobra, ROT90, "Stern", "Tazz-Mania (set 1)", GAME_SUPPORTS_SAVE ) -GAME( 1982, anteater, 0, anteater, anteater, anteater, ROT90, "[Stern] (Tago license)", "Anteater", GAME_SUPPORTS_SAVE ) +GAME( 1982, anteater, 0, anteater, anteater, anteater, ROT90, "[Stern] (Tago license)", "Anteater", GAME_SUPPORTS_SAVE ) -GAME( 1984, spdcoin, 0, scobra, spdcoin, scobra, ROT90, "Stern", "Speed Coin (prototype)", GAME_SUPPORTS_SAVE ) -GAME( 1985, superbon, 0, scobra, superbon, superbon, ROT90, "Signatron USA", "Agent Super Bond (Scobra Hardware)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) +GAME( 1982, calipso, 0, scobra, calipso, calipso, ROT90, "[Stern] (Tago license)", "Calipso", GAME_SUPPORTS_SAVE ) -GAME( 1982, calipso, 0, scobra, calipso, calipso, ROT90, "[Stern] (Tago license)", "Calipso", GAME_SUPPORTS_SAVE ) +GAME( 1982, losttomb, 0, scobra, losttomb, losttomb, ROT90, "Stern", "Lost Tomb (easy)", GAME_SUPPORTS_SAVE ) +GAME( 1982, losttombh, losttomb, scobra, losttomb, losttomb, ROT90, "Stern", "Lost Tomb (hard)", GAME_SUPPORTS_SAVE ) -GAME( 1981, moonwar, 0, moonwar, moonwar, moonwar, ROT90, "Stern", "Moonwar", GAME_SUPPORTS_SAVE ) -GAME( 1981, moonwara, moonwar, moonwar, moonwara, moonwar, ROT90, "Stern", "Moonwar (older)", GAME_SUPPORTS_SAVE ) +GAME( 1984, spdcoin, 0, scobra, spdcoin, scobra, ROT90, "Stern", "Speed Coin (prototype)", GAME_SUPPORTS_SAVE ) + +GAME( 1985, superbon, 0, scobra, superbon, superbon, ROT90, "Signatron USA", "Agent Super Bond (Scobra Hardware)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/skyarmy.c b/src/mame/drivers/skyarmy.c index c893a90db08..2a892a01109 100644 --- a/src/mame/drivers/skyarmy.c +++ b/src/mame/drivers/skyarmy.c @@ -1,4 +1,9 @@ /* + 2010.04.05. stephh + + - Fixed Dip Switches and Inputs (after verification of the Z80 code) + - Updated memory map to partially handle screen flipping + 05/01/2003 MooglyGuy/Ryan Holtz - Corrected second AY (shouldn't have been there) - Added first AY's status read @@ -39,6 +44,16 @@ public: int nmi; }; +WRITE8_HANDLER( skyarmy_flip_screen_x_w ) +{ + flip_screen_x_set(space->machine, data & 0x01); +} + +WRITE8_HANDLER( skyarmy_flip_screen_y_w ) +{ + flip_screen_y_set(space->machine, data & 0x01); +} + static TILE_GET_INFO( get_skyarmy_tile_info ) { skyarmy_state *state = (skyarmy_state *)machine->driver_data; @@ -144,7 +159,7 @@ static WRITE8_HANDLER( nmi_enable_w ) { skyarmy_state *state = (skyarmy_state *)space->machine->driver_data; - state->nmi=data&1; + state->nmi=data & 1; } @@ -160,8 +175,8 @@ static ADDRESS_MAP_START( skyarmy_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2") AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM") AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ??? - AM_RANGE(0xa005, 0xa005) AM_WRITENOP - AM_RANGE(0xa006, 0xa006) AM_WRITENOP + AM_RANGE(0xa005, 0xa005) AM_WRITE(skyarmy_flip_screen_x_w) + AM_RANGE(0xa006, 0xa006) AM_WRITE(skyarmy_flip_screen_y_w) AM_RANGE(0xa007, 0xa007) AM_WRITENOP ADDRESS_MAP_END @@ -171,45 +186,61 @@ static ADDRESS_MAP_START( skyarmy_io_map, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r) ADDRESS_MAP_END + +/* verified from Z80 code */ static INPUT_PORTS_START( skyarmy ) PORT_START("DSW") - PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x02, "4" ) - PORT_DIPSETTING( 0x03, DEF_STR (Free_Play )) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x03, DEF_STR ( Infinite ) ) + PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x00, "10000" ) + PORT_DIPSETTING( 0x04, "20000" ) + PORT_DIPSETTING( 0x08, "30000" ) + PORT_DIPSETTING( 0x0c, "40000" ) + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) - /* coinage - bits 4-7 ? */ + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0xC0, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0xC0, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON6 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON7 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static const gfx_layout charlayout = @@ -292,5 +323,4 @@ ROM_START( skyarmy ) ROM_LOAD( "a6.bin", 0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) ) ROM_END -GAME( 1982, skyarmy, 0, skyarmy, skyarmy, 0, ROT90, "Shoei", "Sky Army", 0 ) - +GAME( 1982, skyarmy, 0, skyarmy, skyarmy, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL )