nycaptor, colt, cyclshtg, bronx (nycaptor.c) [stephh] :

- Fixed Dip Switches and Inputs (after verification of the Z80 code)
This commit is contained in:
stephh 2010-08-14 00:39:50 +00:00
parent 91da81b539
commit b2caa2a945

View File

@ -24,6 +24,8 @@ To do :
- unknown R/W
- 13th bit in color defs (priority? bit is set for all colors in spot1,
for 3/4 screen cols in spot2 etc)
- handle coin counters and coin lockout
Notes :
$d000 - MCU data read/write
@ -129,17 +131,60 @@ RAM :
Stephh's additional notes (based on the game Z80 code and some tests) :
1) 'nycaptor' and clones
1a) 'nycaptor'
- You need to press SERVICE1 while resetting the game to enter the "test mode".
Note that the grid is always displayed, so it's IMPOSSIBLE to see what's in it 8(
- When "Infinite Bullets" is set to ON, there is no timer to reload the bullets.
- When "No Hit" Dip Switch is ON, damage is still incremented, but there are
no test made if it reaches the limit (0x0a).
- Bit 2 of 0xd802 also determines the precision of a shot
- DSWC bit 2 also determines the precision of a shot
(= range around a bullet where the enemies can be killed) :
* 0 : small range (0x0a)
* 1 : high range (0x0c)
* 0 : small range (0x0a or 0x10)
* 1 : high range (0x0c or 0x12)
- Even when "Coin Slots" is set to "1", pressing COIN2 will be based on "Coin B" settings.
1b) 'colt'
- Due to patched code at 0x9fd, lives (BCD coded) settings are different than in 'nycaptor'.
Display at start will be lives-1, but it will also display "0" when you select 100 lives.
- The game is much harder than 'nycaptor' :
* Due to the 4 'nop' instructions at 0x0b03, you can't get any extra life.
* Due to patched code from 0x0bea to 0x0bf4, you lose a life as soon as you get hit
by en enemy or when you shoot at an innocent.
Furthermore, shooting birds kills you instead of recovering 3 "steps" of damage !
- I can't tell if it's an ingame bug of this bootleg, but the game hangs after bonus stage
(level 4) instead of looping back to level 1 with higher difficulty.
The game also frezees sometimes for some unknown reasons.
2) 'cyclshtg' and clones
2a) 'cyclshtg'
- Lives (BCD coded) settings are not read from MCU, but from table at 0x0fee.
- Even if it isn't mentionned in the manual, DSWB bit 7 allows you to reset damage to 0
at the end of a level (check code at 0x328d).
- When "Infinite Bullets" is set to ON, there is no timer to reload the bullets.
However, it's hard to notice as you don't see an indicator as in 'nycaptor'.
- There is a leftover from 'nycaptor' in CPU1 which reads DSWA bits 0 and 1 to determine
"Bonus Lives" settings (code at 0x009b). These values are overwritten via code in CPU 0.
2b) 'bronx'
- Lives (BCD coded) settings are different than in 'cyclshtg' (table at 0x0fea).
- The game is much harder than 'cyclshtg' :
* You start with less lives with default settings (2 instead of 3).
* Due to the 'add a,$00' instruction at 0x1131, you can't get any extra life
(when you get enough points, or even when you hit the "1UP" bonus).
* Due to extra code at 0x3062, you start the game as if you had already sustained
8 "steps" of damage. However, when you end a level, if "Damage Reset" Dip Switch
is ON, your damage will be reset to 0.
Furthermore, the game starts as if you had completed the 6 stages 8 times.
* Due to the 'ld (ix+$0e),$08' instruction at 0x32b1, you also start the
other lives as if you had already sustained 8 "steps" of damage. However, again,
when you end a level, if "Damage Reset" Dip Switch is ON, your damage will be reset to 0.
***************************************************************************/
@ -149,6 +194,7 @@ Stephh's additional notes (based on the game Z80 code and some tests) :
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m6805/m6805.h"
#include "includes/taitoipt.h"
#include "sound/ay8910.h"
#include "sound/msm5232.h"
#include "includes/nycaptor.h"
@ -309,9 +355,9 @@ static ADDRESS_MAP_START( nycaptor_master_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
AM_RANGE(0xd401, 0xd401) AM_READNOP
AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xd805, 0xd805) AM_READ(nycaptor_mcu_status_r1)
@ -328,9 +374,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( nycaptor_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_BASE_SIZE_MEMBER(nycaptor_state, videoram, videoram_size)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
@ -415,9 +461,9 @@ static ADDRESS_MAP_START( cyclshtg_master_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w)
AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
@ -434,9 +480,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cyclshtg_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_BASE_SIZE_MEMBER(nycaptor_state, videoram, videoram_size)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
@ -465,9 +511,9 @@ static ADDRESS_MAP_START( bronx_master_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
AM_RANGE(0xd401, 0xd401) AM_READ(unk_r)
AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
@ -483,9 +529,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bronx_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_BASE_SIZE_MEMBER(nycaptor_state, videoram, videoram_size)
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r1)
@ -505,68 +551,18 @@ static ADDRESS_MAP_START( bronx_slave_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
/* Cycle Shooting */
static INPUT_PORTS_START( cyclshtg )
PORT_START("DSW0")
PORT_DIPNAME( 0x04, 0x04, "Test Mode" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
PORT_START("DSW1")
PORT_START("DSW2")
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )//?
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Tilt ) )
PORT_DIPSETTING( 0x08, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_START("LIGHTX")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
PORT_START("LIGHTY")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( nycaptor )
PORT_START("DSW0")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) )
PORT_DIPSETTING( 0x02, "20k, 80k then every 80k" )
PORT_DIPSETTING( 0x03, "50k, 150k then every 200k" )
PORT_DIPSETTING( 0x01, "100k, 300k then every 300k" )
PORT_DIPSETTING( 0x00, "150k, 300k then every 300k" )
PORT_DIPNAME( 0x04, 0x04, "Infinite Bullets (Cheat)")
PORT_START("DSWA")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) ) /* table at 0x00e5 in CPU1 - see notes for 'colt' */
PORT_DIPSETTING( 0x02, "20k 80k 80k+" )
PORT_DIPSETTING( 0x03, "50k 150k 200k+" )
PORT_DIPSETTING( 0x01, "100k 300k 300k+" )
PORT_DIPSETTING( 0x00, "150k 300k 300k+" )
PORT_DIPNAME( 0x04, 0x04, "Infinite Bullets") /* see notes */
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) )
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) ) /* values are read from the MCU */
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x18, "3" )
@ -581,7 +577,7 @@ static INPUT_PORTS_START( nycaptor )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW1")
PORT_START("DSWB")
PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x0f, DEF_STR( 9C_1C ) )
PORT_DIPSETTING( 0x0e, DEF_STR( 8C_1C ) )
@ -617,7 +613,7 @@ static INPUT_PORTS_START( nycaptor )
PORT_DIPSETTING( 0x60, DEF_STR( 1C_7C ) )
PORT_DIPSETTING( 0x70, DEF_STR( 1C_8C ) )
PORT_START("DSW2")
PORT_START("DSWC")
PORT_DIPNAME( 0x01, 0x01, "Freeze" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -644,17 +640,17 @@ static INPUT_PORTS_START( nycaptor )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* IPT_START2 is some similar Taito games (eg: 'flstory') */
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* IPT_START2 is some similar Taito games (eg: 'flstory') */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "I/O ERROR" if active */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "I/O ERROR" if active */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "I/O ERROR" if active - code at 0x083d */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "I/O ERROR" if active - code at 0x083d */
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("LIGHTX")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
@ -663,6 +659,90 @@ static INPUT_PORTS_START( nycaptor )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( colt )
PORT_INCLUDE( nycaptor )
PORT_MODIFY("DSWA")
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) ) /* see notes */
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x18, "3" )
PORT_DIPSETTING( 0x00, "100" )
INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( cyclshtg )
PORT_START("DSWA")
PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW )
PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW )
TAITO_DSWA_BITS_2_TO_3
TAITO_COINAGE_JAPAN_OLD /* coinage B isn't mentionned in the manual */
PORT_START("DSWB")
TAITO_DIFFICULTY
PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Bonus_Life ) ) /* table at 0x100f - see notes for 'bronx' */
PORT_DIPSETTING( 0x0c, "150k 350k 200k+" )
PORT_DIPSETTING( 0x08, "200k 500k 300k+" )
PORT_DIPSETTING( 0x04, "300k 700k 400k+" )
PORT_DIPSETTING( 0x00, "400k 900k 500k+" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) /* see notes */
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x30, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x20, "5" )
PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x80, 0x80, "Reset Damage (Cheat)" ) /* see notes */
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSWC")
PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW )
PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW )
PORT_DIPUNUSED( 0x04, IP_ACTIVE_LOW )
PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x10, 0x10, "Infinite Bullets" ) /* see notes */
PORT_DIPSETTING( 0x10, 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 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* IPT_START2 is some similar Taito games (eg: 'flstory') */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("LIGHTX")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
PORT_START("LIGHTY")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( bronx )
PORT_INCLUDE( cyclshtg )
PORT_MODIFY("DSWB")
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) /* see notes */
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x20, "5" )
INPUT_PORTS_END
static const gfx_layout charlayout =
{
8,8,
@ -1282,6 +1362,18 @@ ROM_START( colt )
ROM_LOAD( "a50_14", 0x1c000, 0x4000, CRC(24b2f1bf) SHA1(4757aec2e4b99ce33d993ce1e19ee46a4eb76e86) )
ROM_END
static DRIVER_INIT( nycaptor )
{
nycaptor_state *state = machine->driver_data<nycaptor_state>();
state->gametype = 0;
}
static DRIVER_INIT( cyclshtg )
{
nycaptor_state *state = machine->driver_data<nycaptor_state>();
state->gametype = 1;
}
static DRIVER_INIT( bronx )
{
nycaptor_state *state = machine->driver_data<nycaptor_state>();
@ -1306,20 +1398,8 @@ static DRIVER_INIT( colt )
state->gametype = 2;
}
static DRIVER_INIT( nycaptor )
{
nycaptor_state *state = machine->driver_data<nycaptor_state>();
state->gametype = 0;
}
static DRIVER_INIT( cyclshtg )
{
nycaptor_state *state = machine->driver_data<nycaptor_state>();
state->gametype = 1;
}
GAME( 1985, nycaptor, 0, nycaptor, nycaptor, nycaptor, ROT0, "Taito", "N.Y. Captor", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1986, cyclshtg, 0, cyclshtg, cyclshtg, cyclshtg, ROT90, "Taito", "Cycle Shooting", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
/* bootlegs */
GAME( 1986, bronx, cyclshtg, bronx, cyclshtg, bronx, ROT90, "bootleg", "Bronx", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1986, colt , nycaptor, bronx, nycaptor, colt, ROT0, "bootleg", "Colt", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
GAME( 1986, bronx, cyclshtg, bronx, bronx, bronx, ROT90, "bootleg", "Bronx", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1986, colt, nycaptor, bronx, colt, colt, ROT0, "bootleg", "Colt", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )