📄 exidy.c
字号:
/***************************************************************************
Exidy memory map
0000-00FF R/W Zero Page RAM
0100-01FF R/W Stack RAM
0200-03FF R/W Scratchpad RAM
0800-3FFF R Program ROM (Targ, Spectar only)
1A00 R PX3 (Player 2 inputs) (Fax only)
bit 4 D
bit 5 C
bit 6 B
bit 7 A
1C00 R PX2 (Player 1 inputs) (Fax only)
bit 0 2 player start
bit 1 1 player start
bit 4 D
bit 5 C
bit 6 B
bit 7 A
2000-3FFF R Banked question ROM (Fax only)
4000-43FF R/W Screen RAM
4800-4FFF R/W Character Generator RAM (except Pepper II and Fax)
5000 W Motion Object 1 Horizontal Position Latch (sprite 1 X)
5040 W Motion Object 1 Vertical Position Latch (sprite 1 Y)
5080 W Motion Object 2 Horizontal Position Latch (sprite 2 X)
50C0 W Motion Object 2 Vertical Position Latch (sprite 2 Y)
5100 R Option Dipswitch Port
bit 0 coin 2 (NOT inverted) (must activate together with $5103 bit 5)
bit 1-2 bonus
bit 3-4 coins per play
bit 5-6 lives
bit 7 US/UK coins
5100 W Motion Objects Image Latch
Sprite number bits 0-3 Sprite #1 4-7 Sprite #2
5101 R Control Inputs Port
bit 0 start 1
bit 1 start 2
bit 2 right
bit 3 left
bit 5 up
bit 6 down
bit 7 coin 1 (must activate together with $5103 bit 6)
5101 W Output Control Latch (not used in PEPPER II upright)
bit 7 Enable sprite #1
bit 6 Enable sprite #2
5103 R Interrupt Condition Latch
bit 0 LNG0 - supposedly a language DIP switch
bit 1 LNG1 - supposedly a language DIP switch
bit 2 different for each game, but generally a collision bit
bit 3 TABLE - supposedly a cocktail table DIP switch
bit 4 different for each game, but generally a collision bit
bit 5 coin 2 (must activate together with $5100 bit 0)
bit 6 coin 1 (must activate together with $5101 bit 7)
bit 7 L256 - VBlank?
5213 R IN2 (Mouse Trap)
bit 3 blue button
bit 2 free play
bit 1 red button
bit 0 yellow button
52XX R/W Audio/Color Board Communications
6000-6FFF R/W Character Generator RAM (Pepper II, Fax only)
8000-FFF9 R Program memory space
FFFA-FFFF R Interrupt and Reset Vectors
Targ:
5200 Sound board control
bit 0 Music
bit 1 Shoot
bit 2 unused
bit 3 Swarn
bit 4 Sspec
bit 5 crash
bit 6 long
bit 7 game
5201 Sound board control
bit 0 note
bit 1 upper
***************************************************************************/
#include "driver.h"
#include "vidhrdw/generic.h"
#include "machine/6821pia.h"
/* These are defined in sndhrdw/exidy.c */
void exidy_shriot_w(int offset,int data);
int exidy_shriot_r(int offset);
void exidy_sh8253_w(int offset,int data);
int exidy_sh8253_r(int offset);
extern int exidy_sh_start(void);
extern void exidy_sh_stop(void);
/* These are defined in vidhrdw/exidy.c */
int exidy_vh_start(void);
void exidy_vh_stop(void);
void exidy_characterram_w(int offset,int data);
void exidy_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
void exidy_color_w(int offset,int data);
extern unsigned char *exidy_characterram;
extern unsigned char *exidy_sprite_no;
extern unsigned char *exidy_sprite_enable;
extern unsigned char *exidy_sprite1_xpos;
extern unsigned char *exidy_sprite1_ypos;
extern unsigned char *exidy_sprite2_xpos;
extern unsigned char *exidy_sprite2_ypos;
extern unsigned char *exidy_color_latch;
extern unsigned char *exidy_collision;
extern int exidy_collision_counter;
/* These are defined in machine/exidy.c */
extern void fax_bank_select_w(int offset,int data);
extern int exidy_input_port_2_r(int offset);
extern void exidy_init_machine(void);
extern int venture_interrupt(void);
extern int venture_shinterrupt(void);
extern int exidy_interrupt(void);
extern unsigned char exidy_collision_mask;
/* These are defined in sndhrdw/targ.c */
extern unsigned char targ_spec_flag;
extern void targ_sh_w(int offset,int data);
extern int targ_sh_start(void);
extern void targ_sh_stop(void);
static struct MemoryReadAddress readmem[] =
{
{ 0x0000, 0x03ff, MRA_RAM },
{ 0x0800, 0x3fff, MRA_ROM }, /* Targ, Spectar only */
{ 0x4000, 0x43ff, MRA_RAM },
{ 0x4800, 0x4fff, MRA_RAM },
{ 0x5100, 0x5100, input_port_0_r }, /* DSW */
{ 0x5101, 0x5101, input_port_1_r }, /* IN0 */
{ 0x5103, 0x5103, exidy_input_port_2_r, &exidy_collision }, /* IN1 */
{ 0x5105, 0x5105, input_port_4_r }, /* IN3 - Targ, Spectar only */
{ 0x5200, 0x520F, pia_1_r },
{ 0x5213, 0x5213, input_port_3_r }, /* IN2 */
{ 0x6000, 0x6fff, MRA_RAM }, /* Pepper II only */
{ 0x8000, 0xffff, MRA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress writemem[] =
{
{ 0x0000, 0x03ff, MWA_RAM },
{ 0x0800, 0x3fff, MWA_ROM },
{ 0x4000, 0x43ff, videoram_w, &videoram, &videoram_size },
{ 0x4800, 0x4fff, exidy_characterram_w, &exidy_characterram },
{ 0x5000, 0x5000, MWA_RAM, &exidy_sprite1_xpos },
{ 0x5040, 0x5040, MWA_RAM, &exidy_sprite1_ypos },
{ 0x5080, 0x5080, MWA_RAM, &exidy_sprite2_xpos },
{ 0x50C0, 0x50C0, MWA_RAM, &exidy_sprite2_ypos },
{ 0x5100, 0x5100, MWA_RAM, &exidy_sprite_no },
{ 0x5101, 0x5101, MWA_RAM, &exidy_sprite_enable },
{ 0x5200, 0x520F, pia_1_w },
{ 0x5210, 0x5212, exidy_color_w, &exidy_color_latch },
{ 0x8000, 0xffff, MWA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress targ_writemem[] =
{
{ 0x0000, 0x03ff, MWA_RAM },
{ 0x0800, 0x3fff, MWA_ROM },
{ 0x4000, 0x43ff, videoram_w, &videoram, &videoram_size },
{ 0x4800, 0x4fff, exidy_characterram_w, &exidy_characterram },
{ 0x5000, 0x5000, MWA_RAM, &exidy_sprite1_xpos },
{ 0x5040, 0x5040, MWA_RAM, &exidy_sprite1_ypos },
{ 0x5080, 0x5080, MWA_RAM, &exidy_sprite2_xpos },
{ 0x50C0, 0x50C0, MWA_RAM, &exidy_sprite2_ypos },
{ 0x5100, 0x5100, MWA_RAM, &exidy_sprite_no },
{ 0x5101, 0x5101, MWA_RAM, &exidy_sprite_enable },
{ 0x5200, 0x5201, targ_sh_w },
{ 0x8000, 0xffff, MWA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress pepper2_writemem[] =
{
{ 0x0000, 0x03ff, MWA_RAM },
{ 0x4000, 0x43ff, videoram_w, &videoram, &videoram_size },
{ 0x5000, 0x5000, MWA_RAM, &exidy_sprite1_xpos },
{ 0x5040, 0x5040, MWA_RAM, &exidy_sprite1_ypos },
{ 0x5080, 0x5080, MWA_RAM, &exidy_sprite2_xpos },
{ 0x50C0, 0x50C0, MWA_RAM, &exidy_sprite2_ypos },
{ 0x5100, 0x5100, MWA_RAM, &exidy_sprite_no },
{ 0x5101, 0x5101, MWA_RAM, &exidy_sprite_enable },
{ 0x5200, 0x520F, pia_1_w },
{ 0x5210, 0x5212, exidy_color_w, &exidy_color_latch },
{ 0x5213, 0x5217, MWA_NOP }, /* empty control lines on color/sound board */
{ 0x6000, 0x6fff, exidy_characterram_w, &exidy_characterram }, /* two 6116 character RAMs */
{ 0x8000, 0xffff, MWA_ROM },
{ -1 } /* end of table */
};
static struct MemoryReadAddress fax_readmem[] =
{
{ 0x0000, 0x03ff, MRA_RAM },
{ 0x0400, 0x07ff, MRA_RAM }, /* Fax only */
{ 0x1a00, 0x1a00, input_port_4_r }, /* IN3 - Fax only */
{ 0x1c00, 0x1c00, input_port_3_r }, /* IN2 - Fax only */
{ 0x2000, 0x3fff, MRA_BANK1 }, /* Fax only */
{ 0x4000, 0x43ff, MRA_RAM },
{ 0x5100, 0x5100, input_port_0_r }, /* DSW */
{ 0x5101, 0x5101, input_port_1_r }, /* IN0 */
{ 0x5103, 0x5103, exidy_input_port_2_r, &exidy_collision }, /* IN1 */
{ 0x5200, 0x520F, pia_1_r },
{ 0x5213, 0x5213, input_port_3_r }, /* IN2 */
{ 0x6000, 0x6fff, MRA_RAM }, /* Fax, Pepper II only */
{ 0x8000, 0xffff, MRA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress fax_writemem[] =
{
{ 0x0000, 0x03ff, MWA_RAM },
{ 0x0400, 0x07ff, MWA_RAM }, /* Fax only */
{ 0x2000, 0x2000, fax_bank_select_w }, /* Fax only */
{ 0x4000, 0x43ff, videoram_w, &videoram, &videoram_size },
{ 0x5000, 0x5000, MWA_RAM, &exidy_sprite1_xpos },
{ 0x5040, 0x5040, MWA_RAM, &exidy_sprite1_ypos },
{ 0x5080, 0x5080, MWA_RAM, &exidy_sprite2_xpos },
{ 0x50C0, 0x50C0, MWA_RAM, &exidy_sprite2_ypos },
{ 0x5100, 0x5100, MWA_RAM, &exidy_sprite_no },
{ 0x5101, 0x5101, MWA_RAM, &exidy_sprite_enable },
{ 0x5200, 0x520F, pia_1_w },
{ 0x5210, 0x5212, exidy_color_w, &exidy_color_latch },
{ 0x5213, 0x5217, MWA_NOP }, /* empty control lines on color/sound board */
{ 0x6000, 0x6fff, exidy_characterram_w, &exidy_characterram }, /* two 6116 character RAMs */
{ 0x8000, 0xffff, MWA_ROM },
{ -1 } /* end of table */
};
static struct MemoryReadAddress sound_readmem[] =
{
{ 0x0000, 0x07ff, MRA_RAM },
{ 0x0800, 0x0FFF, exidy_shriot_r },
{ 0x1000, 0x100F, pia_2_r },
{ 0x1800, 0x1FFF, exidy_sh8253_r },
{ 0x2000, 0x3FFF, MRA_RAM },
{ 0x5800, 0x7fff, MRA_ROM },
{ 0x8000, 0xf7ff, MRA_RAM },
{ 0xf800, 0xffff, MRA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress sound_writemem[] =
{
{ 0x0000, 0x07FF, MWA_RAM },
{ 0x0800, 0x0FFF, exidy_shriot_w },
{ 0x1000, 0x100F, pia_2_w },
{ 0x1800, 0x1FFF, exidy_sh8253_w },
{ 0x2000, 0x3FFF, MWA_RAM },
{ 0x5800, 0x7fff, MWA_ROM },
{ 0x8000, 0xf7ff, MWA_RAM },
{ 0xf800, 0xffff, MWA_ROM },
{ -1 } /* end of table */
};
/***************************************************************************
Input Ports
***************************************************************************/
INPUT_PORTS_START( sidetrac_input_ports )
PORT_START /* DSW0 */
PORT_DIPNAME(0x03, 0x00, "Trains", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "01")
PORT_DIPSETTING( 0x01, "02")
PORT_DIPSETTING( 0x02, "03")
PORT_DIPSETTING( 0x03, "04")
PORT_DIPNAME( 0x0c, 0x04, "Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "1C / 2P" )
PORT_DIPSETTING( 0x04, "1C / 1P" )
PORT_DIPSETTING( 0x08, "2C / 1P" )
PORT_DIPSETTING( 0x0c, "2C / 1P")
PORT_DIPNAME(0x10, 0x10, "Top Score Award", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x10, "On" )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
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_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN2 */
PORT_BIT( 0xFF, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN3 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
INPUT_PORTS_START( targ_input_ports )
PORT_START /* DSW0 */
PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) /* upright/cocktail switch? */
PORT_DIPNAME( 0x02, 0x00, "P Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "10P/1 C 50P Coin/6 Cs" )
PORT_DIPSETTING( 0x02, "2x10P/1 C 50P Coin/3 Cs" )
PORT_DIPNAME( 0x04, 0x00, "Top Score Award", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Credit" )
PORT_DIPSETTING( 0x04, "Extended Play" )
PORT_DIPNAME( 0x18, 0x08, "Q Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x10, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x08, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x00, "1C/1C (no display)" )
PORT_DIPSETTING( 0x18, "1 Coin/2 Credits" )
PORT_DIPNAME( 0x60, 0x40, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x60, "2" )
PORT_DIPSETTING( 0x40, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x80, 0x80, "Currency", IP_KEY_NONE )
PORT_DIPSETTING( 0x80, "Quarters" )
PORT_DIPSETTING( 0x00, "Pence" )
PORT_START /* IN0 */
PORT_BIT( 0x7F, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START /* IN2 */
PORT_BIT( 0xFF, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN3 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/* identical to Targ, the only difference is the additional Language dip switch */
INPUT_PORTS_START( spectar_input_ports )
PORT_START /* DSW0 */
PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) /* upright/cocktail switch? */
PORT_DIPNAME( 0x02, 0x00, "P Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "10P/1 C 50P Coin/6 Cs" )
PORT_DIPSETTING( 0x02, "2x10P/1 C 50P Coin/3 Cs" )
PORT_DIPNAME( 0x04, 0x00, "Top Score Award", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Credit" )
PORT_DIPSETTING( 0x04, "Extended Play" )
PORT_DIPNAME( 0x18, 0x08, "Q Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x10, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x08, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x00, "1C/1C (no display)" )
PORT_DIPSETTING( 0x18, "1 Coin/2 Credits" )
PORT_DIPNAME( 0x60, 0x40, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x60, "2" )
PORT_DIPSETTING( 0x40, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x80, 0x80, "Currency", IP_KEY_NONE )
PORT_DIPSETTING( 0x80, "Quarters" )
PORT_DIPSETTING( 0x00, "Pence" )
PORT_START /* IN0 */
PORT_BIT( 0x7F, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
PORT_DIPNAME( 0x03, 0x00, "Language", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "English" )
PORT_DIPSETTING( 0x01, "French" )
PORT_DIPSETTING( 0x02, "German" )
PORT_DIPSETTING( 0x03, "Spanish" )
PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START /* IN2 */
PORT_BIT( 0xFF, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN3 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
INPUT_PORTS_START( mtrap_input_ports )
PORT_START /* DSW0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_DIPNAME( 0x06, 0x06, "Bonus Life", IP_KEY_NONE )
PORT_DIPSETTING( 0x06, "30000" )
PORT_DIPSETTING( 0x04, "40000" )
PORT_DIPSETTING( 0x02, "50000" )
PORT_DIPSETTING( 0x00, "60000" )
PORT_DIPNAME( 0x98, 0x98, "Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x90, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x98, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x88, "1 Coin/2 Credits" )
PORT_DIPSETTING( 0x80, "1 Coin/4 Credits" )
PORT_DIPSETTING( 0x00, "Coin A 2/1 Coin B 1/3" )
PORT_DIPSETTING( 0x08, "Coin A 1/3 Coin B 2/7" )
PORT_DIPSETTING( 0x10, "Coin A 1/1 Coin B 1/4" )
PORT_DIPSETTING( 0x18, "Coin A 1/1 Coin B 1/5" )
PORT_DIPNAME( 0x60, 0x40, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x60, "2" )
PORT_DIPSETTING( 0x40, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x00, "5" )
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_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_BUTTON1, "Dog Button", IP_KEY_DEFAULT, IP_JOY_DEFAULT, 0 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
/*
The schematics claim these exist, but there's nothing in
the ROMs to support that claim (as far as I can see):
PORT_DIPNAME( 0x03, 0x00, "Language", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "English" )
PORT_DIPSETTING( 0x01, "French" )
PORT_DIPSETTING( 0x02, "German" )
PORT_DIPSETTING( 0x03, "Spanish" )
PORT_DIPNAME( 0x08, 0x00, "Cabinet", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Upright" )
PORT_DIPSETTING( 0x08, "Cocktail" )
*/
PORT_BIT( 0x1F, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -