📄 wow.c
字号:
{ 0x17, 0x17, gorf_speech_r }, /* Actually a Write! */
{ -1 } /* end of table */
};
static struct MemoryReadAddress Gorf_readmem[] =
{
{ 0xd000, 0xd0a4, MRA_RAM },
{ 0xd0a5, 0xd0a5, gorf_timer_r },
{ 0xd0a6, 0xdfff, MRA_RAM },
{ 0xd9d5, 0xdfff, MRA_RAM },
{ 0x4000, 0x7fff, MRA_RAM },
{ 0x0000, 0x3fff, MRA_ROM },
{ 0x8000, 0xcfff, MRA_ROM },
{ -1 } /* end of table */
};
INPUT_PORTS_START( gorf_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BITX( 0x04, 0x04, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x04, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_DIPNAME( 0x40, 0x40, "Cabinet", IP_KEY_NONE )
PORT_DIPSETTING( 0x40, "Upright" )
PORT_DIPSETTING( 0x00, "Cocktail" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
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( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* speech status */
PORT_START /* Dip Switch */
PORT_DIPNAME( 0x01, 0x01, "Coin A", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit" )
PORT_DIPNAME( 0x06, 0x06, "Coin B", IP_KEY_NONE )
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x06, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x02, "1 Coin/3 Credits" )
PORT_DIPSETTING( 0x00, "1 Coin/5 Credits" )
PORT_DIPNAME( 0x08, 0x08, "Language", IP_KEY_NONE )
PORT_DIPSETTING( 0x08, "English" )
PORT_DIPSETTING( 0x00, "Foreign (NEED ROM)" )
PORT_DIPNAME( 0x10, 0x00, "Lives per Credit", IP_KEY_NONE )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x20, 0x00, "Bonus Life", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Mission 5" )
PORT_DIPSETTING( 0x20, "None" )
PORT_DIPNAME( 0x40, 0x40, "Free Play", IP_KEY_NONE )
PORT_DIPSETTING( 0x40, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x80, 0x80, "Demo Sounds", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x80, "On" )
INPUT_PORTS_END
static struct Samplesinterface gorf_samples_interface =
{
8 /* 8 channels */
};
static struct MachineDriver gorf_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
1789773, /* 1.789 Mhz */
0,
Gorf_readmem,writemem,Gorf_readport,writeport, /* ASG */
gorf_interrupt,256
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
/* it may look like the right hand side of the screen needs clipping, but */
/* this isn't the case: cocktail mode would be clipped on the wrong side */
204, 320, { 0, 204-1, 0, 320-1 },
0, /* no gfxdecodeinfo - bitmapped display */
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
0,
gorf_vh_start,
generic_vh_stop,
gorf_vh_screenrefresh,
/* sound hardware */
0,
gorf_sh_start,
gorf_sh_stop,
gorf_sh_update,
{
{
SOUND_SAMPLES,
&gorf_samples_interface
},
{
SOUND_ASTROCADE,
&astrocade_2chip_interface
}
}
};
static int gorf_hiload(void)
{
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
/* check if the hi score table has already been initialized */
if ((RAM[0xD00B]==0xFF) && (RAM[0xD03D]==0x33))
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0xD010],0x22);
osd_fclose(f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void gorf_hisave(void)
{
void *f;
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
{
osd_fwrite(f,&RAM[0xD010],0x22);
osd_fclose(f);
}
}
struct GameDriver gorf_driver =
{
__FILE__,
0,
"gorf",
"Gorf",
"1981",
"Midway",
"Nicola Salmoria (MAME driver)\nSteve Scavone (info and code)\nMike Coates (game support)\nKevin Estep (samples)\nAlex Judd (word sound driver)\nFrank Palazzolo",
0,
&gorf_machine_driver,
0,
gorf_rom,
0, 0,
gorf_sample_names,
0, /* sound_prom */
gorf_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
gorf_hiload, gorf_hisave
};
struct GameDriver gorfpgm1_driver =
{
__FILE__,
&gorf_driver,
"gorfpgm1",
"Gorf (Program 1)",
"1981",
"Midway",
"Nicola Salmoria (MAME driver)\nSteve Scavone (info and code)\nMike Coates (game support)\nKevin Estep (samples)\nAlex Judd (word sound driver)\nFrank Palazzolo",
0,
&gorf_machine_driver,
0,
gorfpgm1_rom,
0, 0,
gorf_sample_names,
0, /* sound_prom */
gorf_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
gorf_hiload, gorf_hisave
};
/****************************************************************************
* Space Zap
****************************************************************************/
ROM_START( spacezap_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "0662.01", 0x0000, 0x1000, 0xa92de312 )
ROM_LOAD( "0663.xx", 0x1000, 0x1000, 0x4836ebf1 )
ROM_LOAD( "0664.xx", 0x2000, 0x1000, 0xd8193a80 )
ROM_LOAD( "0665.xx", 0x3000, 0x1000, 0x3784228d )
ROM_END
INPUT_PORTS_START( spacezap_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
PORT_BITX( 0x08, 0x08, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x08, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN1 */
PORT_START /* IN2 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
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 /* Dip Switch */
PORT_DIPNAME( 0x01, 0x01, "Coin A", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit" )
PORT_DIPNAME( 0x06, 0x06, "Coin B", IP_KEY_NONE )
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x06, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x02, "1 Coin/3 Credits" )
PORT_DIPSETTING( 0x00, "1 Coin/5 Credits" )
PORT_DIPNAME( 0x08, 0x00, "Unknown 1", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x08, "On" )
PORT_DIPNAME( 0x10, 0x00, "Unknown 2", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x10, "On" )
PORT_DIPNAME( 0x20, 0x00, "Unknown 3", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x20, "On" )
PORT_DIPNAME( 0x40, 0x00, "Unknown 4", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x40, "On" )
PORT_DIPNAME( 0x80, 0x00, "Unknown 5", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x80, "On" )
INPUT_PORTS_END
static struct MachineDriver spacezap_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
1789773, /* 1.789 Mhz */
0,
readmem,writemem,readport,writeport,
wow_interrupt,256
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
320, 204, { 0, 320-1, 0, 204-1 },
0, /* no gfxdecodeinfo - bitmapped display */
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
wow_vh_screenrefresh,
/* sound hardware */
0,
0,
0,
0,
{
{
SOUND_ASTROCADE,
&astrocade_2chip_interface
}
}
};
static int spacezap_hiload(void)
{
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
/* check if memory has already been initialized */
if (memcmp(&RAM[0xD024],"\x01\x01",2) == 0)
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0xD01D],6);
/* Appears twice in memory??? */
memcpy(&RAM[0xD041],&RAM[0xD01D],6);
osd_fclose(f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void spacezap_hisave(void)
{
void *f;
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
{
osd_fwrite(f,&RAM[0xD01D],6);
osd_fclose(f);
}
}
struct GameDriver spacezap_driver =
{
__FILE__,
0,
"spacezap",
"Space Zap",
"1980",
"Midway",
"Nicola Salmoria (MAME driver)\nSteve Scavone (info and code)\nMike Coates (game support)\nFrank Palazzolo",
0,
&spacezap_machine_driver,
0,
spacezap_rom,
0, 0,
0,
0, /* sound_prom */
spacezap_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
spacezap_hiload, spacezap_hisave
};
/****************************************************************************
* Seawolf II
****************************************************************************/
ROM_START( seawolf2_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "sw2x1.bin", 0x0000, 0x0800, 0xad0103f6 )
ROM_LOAD( "sw2x2.bin", 0x0800, 0x0800, 0xe0430f0a )
ROM_LOAD( "sw2x3.bin", 0x1000, 0x0800, 0x05ad1619 )
ROM_LOAD( "sw2x4.bin", 0x1800, 0x0800, 0x1a1a14a2 )
ROM_END
static struct MemoryReadAddress seawolf2_readmem[] =
{
{ 0xc000, 0xcfff, MRA_RAM },
{ 0x4000, 0x7fff, MRA_RAM },
{ 0x0000, 0x1fff, MRA_ROM },
{ -1 } /* end of table */
};
static struct MemoryWriteAddress seawolf2_writemem[] =
{
{ 0xc000, 0xcfff, MWA_RAM },
{ 0x4000, 0x7fff, wow_videoram_w, &wow_videoram, &videoram_size },
{ 0x0000, 0x3fff, wow_magicram_w },
{ -1 } /* end of table */
};
INPUT_PORTS_START( seawolf2_input_ports )
PORT_START /* IN0 */
/* bits 0-5 come from a dial - we fake it */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_DIPNAME( 0x40, 0x00, "Language 1", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Language 2" )
PORT_DIPSETTING( 0x40, "French" )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_START /* IN1 */
/* bits 0-5 come from a dial - we fake it */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT| IPF_PLAYER2 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_START /* IN2 */
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_DIPNAME( 0x08, 0x00, "Language 2", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "English" )
PORT_DIPSETTING( 0x08, "German" )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -