📄 circus.c
字号:
static void robotbowl_decode(void)
{
/* PROM is reversed, fix it! */
int Count;
for(Count=31;Count>=0;Count--) Machine->memory_region[1][0x800+Count]^=0xFF;
}
static struct MachineDriver robotbowl_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
11289000/16, /* 705.562kHz */
0,
readmem,writemem,0,0,
interrupt,1
}
},
60, 3500, /* frames per second, vblank duration (complete guess) */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
robotbowl_gfxdecodeinfo,
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
robotbowl_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
struct GameDriver robotbwl_driver =
{
__FILE__,
0,
"robotbwl",
"Robot Bowl",
"1977",
"Exidy",
"Mike Coates",
0,
&robotbowl_machine_driver,
0,
robotbowl_rom,
robotbowl_decode, 0,
0,
0, /* sound_prom */
robotbowl_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
0,0
};
/***************************************************************************
Crash
***************************************************************************/
ROM_START( crash_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "crash.a1", 0x1000, 0x0200, 0xb9571203 ) /* Code */
ROM_LOAD( "crash.a2", 0x1200, 0x0200, 0xb4581a95 )
ROM_LOAD( "crash.a3", 0x1400, 0x0200, 0x597555ae )
ROM_LOAD( "crash.a4", 0x1600, 0x0200, 0x0a15d69f )
ROM_LOAD( "crash.a5", 0x1800, 0x0200, 0xa9c7a328 )
ROM_LOAD( "crash.a6", 0x1A00, 0x0200, 0xc7d62d27 )
ROM_LOAD( "crash.a7", 0x1C00, 0x0200, 0x5e5af244 )
ROM_LOAD( "crash.a8", 0x1E00, 0x0200, 0x3dc50839 )
ROM_RELOAD( 0xFE00, 0x0200 ) /* for the reset and interrupt vectors */
ROM_REGION_DISPOSE(0x0A00) /* temporary space for graphics */
ROM_LOAD( "crash.c1", 0x0600, 0x0200, 0xe9adf1e1 ) /* Character Set */
ROM_LOAD( "crash.c2", 0x0400, 0x0200, 0x38f3e4ed )
ROM_LOAD( "crash.c3", 0x0200, 0x0200, 0x3c8f7560 )
ROM_LOAD( "crash.c4", 0x0000, 0x0200, 0xba16f9e8 )
ROM_LOAD( "crash.d14", 0x0800, 0x0200, 0x833f81e4 ) /* Cars */
ROM_END
INPUT_PORTS_START( crash_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_4WAY )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_4WAY )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_START /* Dip Switch */
PORT_DIPNAME( 0x03, 0x01, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x02, "4" )
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPNAME( 0x0C, 0x04, "Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x04, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x08, "1 Coin/2 Credits" )
PORT_DIPNAME( 0x10, 0x00, "Top Score", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "No Award" )
PORT_DIPSETTING( 0x10, "Credit Awarded" )
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
INPUT_PORTS_END
static int crash_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[0x004B] != 0)
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x000F],2);
osd_fclose(f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void crash_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[0x000F],2);
osd_fclose(f);
RAM[0x004B] =0;
}
}
static struct MachineDriver crash_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
11289000/16, /* 705.562kHz */
0,
readmem,writemem,0,0,
interrupt,2
}
},
60, 3500, /* frames per second, vblank duration (complete guess) */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
gfxdecodeinfo,
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
crash_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
struct GameDriver crash_driver =
{
__FILE__,
0,
"crash",
"Crash",
"1979",
"Exidy",
"Mike Coates",
0,
&crash_machine_driver,
0,
crash_rom,
0, 0,
0,
0, /* sound_prom */
crash_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
crash_hiload,crash_hisave
};
/***************************************************************************
Rip Cord
***************************************************************************/
ROM_START( ripcord_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "9027.1a", 0x1000, 0x0200, 0x56b8dc06 ) /* Code */
ROM_LOAD( "9028.2a", 0x1200, 0x0200, 0xa8a78a30 )
ROM_LOAD( "9029.4a", 0x1400, 0x0200, 0xfc5c8e07 )
ROM_LOAD( "9030.5a", 0x1600, 0x0200, 0xb496263c )
ROM_LOAD( "9031.6a", 0x1800, 0x0200, 0xcdc7d46e )
ROM_LOAD( "9032.7a", 0x1A00, 0x0200, 0xa6588bec )
ROM_LOAD( "9033.8a", 0x1C00, 0x0200, 0xfd49b806 )
ROM_LOAD( "9034.9a", 0x1E00, 0x0200, 0x7caf926d )
ROM_RELOAD( 0xFE00, 0x0200 ) /* for the reset and interrupt vectors */
ROM_REGION_DISPOSE(0x0A00) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "9026.5c", 0x0000, 0x0200, 0x06e7adbb )
ROM_LOAD( "9025.4c", 0x0200, 0x0200, 0x3129527e )
ROM_LOAD( "9024.2c", 0x0400, 0x0200, 0xbcb88396 )
ROM_LOAD( "9023.1c", 0x0600, 0x0200, 0x9f86ed5b ) /* Character Set */
ROM_LOAD( "9035.14d", 0x0800, 0x0200, 0xc9979802 )
ROM_END
INPUT_PORTS_START( ripcord_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
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_COIN1 )
PORT_START /* Dip Switch */
PORT_DIPNAME( 0x03, 0x03, "Jumps", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x02, "7" )
PORT_DIPSETTING( 0x03, "9" )
PORT_DIPNAME( 0x0C, 0x04, "Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Player - 1 Coin" )
PORT_DIPSETTING( 0x04, "1 Player - 1 Coin" )
PORT_DIPSETTING( 0x08, "1 Player - 2 Coin" )
PORT_DIPNAME( 0x10, 0x10, "Top Score", IP_KEY_NONE )
PORT_DIPSETTING( 0x10, "Credit Awarded" )
PORT_DIPSETTING( 0x00, "No Award" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_START /* IN2 - paddle */
PORT_ANALOG ( 0xff, 115, IPT_PADDLE, 50, 0, 64, 167 )
INPUT_PORTS_END
static int ripcord_interrupt (void)
{
circus_interrupt = 0;
if (1)
return ignore_interrupt();
else
return interrupt();
}
static struct MachineDriver ripcord_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
705562, /* 11.289MHz / 16 */
0,
readmem,writemem,0,0,
ripcord_interrupt,1
}
},
60, 3500, /* frames per second, vblank duration (complete guess) */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
gfxdecodeinfo,
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
crash_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
struct GameDriver ripcord_driver =
{
__FILE__,
0,
"ripcord",
"Rip Cord",
"1977",
"Exidy",
"Mike Coates",
GAME_NOT_WORKING,
&ripcord_machine_driver,
0,
ripcord_rom,
0, 0,
0,
0, /* sound_prom */
ripcord_input_ports,
0, palette, colortable,
ORIENTATION_DEFAULT,
0, 0
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -