📄 starwars.c
字号:
PORT_DIPSETTING ( 0x0c, "Hardest" )
PORT_DIPNAME (0x30, 0x00, "Bonus Shields", IP_KEY_NONE )
PORT_DIPSETTING ( 0x00, "0" )
PORT_DIPSETTING ( 0x10, "1" )
PORT_DIPSETTING ( 0x20, "2" )
PORT_DIPSETTING ( 0x30, "3" )
PORT_DIPNAME (0x40, 0x00, "Attract Music", IP_KEY_NONE )
PORT_DIPSETTING ( 0x00, "On" )
PORT_DIPSETTING ( 0x40, "Off" )
PORT_DIPNAME (0x80, 0x80, "Game Mode", IP_KEY_NONE )
PORT_DIPSETTING ( 0x00, "Freeze" )
PORT_DIPSETTING ( 0x80, "Normal" )
PORT_START /* DSW1 */
PORT_DIPNAME (0x03, 0x02, "Credits/Coin", IP_KEY_NONE )
PORT_DIPSETTING ( 0x00, "Free Play" )
PORT_DIPSETTING ( 0x01, "2" )
PORT_DIPSETTING ( 0x02, "1" )
PORT_DIPSETTING ( 0x03, "1/2" )
PORT_BIT ( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN)
PORT_START /* IN4 */
PORT_ANALOGX( 0xff, 0x80, IPT_NONCENTERING_Y, 35, 0, 0, 255, OSD_KEY_UP, OSD_KEY_DOWN, OSD_JOY_UP, OSD_JOY_DOWN, 1)
PORT_START /* IN5 */
PORT_ANALOGX( 0xff, 0x80, IPT_NONCENTERING_X, 25, 0, 0, 255, OSD_KEY_LEFT, OSD_KEY_RIGHT, OSD_JOY_LEFT, OSD_JOY_RIGHT, 1)
INPUT_PORTS_END
static unsigned char color_prom[] = { VEC_PAL_SWARS };
static struct POKEYinterface pokey_interface =
{
4, /* 4 chips */
1500000, /* 1.5 MHz? */
30, /* volume */
POKEY_DEFAULT_GAIN,
USE_CLIP,
/* The 8 pot handlers */
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
/* The allpot handler */
{ 0, 0, 0, 0 },
};
static struct TMS5220interface tms5220_interface =
{
640000, /* clock speed (80*samplerate) */
100, /* volume */
0 /* IRQ handler */
};
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
/* Main CPU */
{
CPU_M6809,
1500000, /* 1.5 Mhz CPU clock (Don't know what speed it should be) */
0, /* Memory region #0 */
readmem,writemem,0,0,
interrupt,6 /* 183Hz ? */
/* Increasing number of interrupts per frame speeds game up */
},
/* Sound CPU */
{
CPU_M6809 | CPU_AUDIO_CPU,
1500000, /* 1.5 Mhz CPU clock (Don't know what speed it should be) */
2, /* Memory region #2 */
readmem2,writemem2,0,0,
0, 0,
0, 0 /* no regular interrupts, see sndhrdw/starwars.c */
}
},
30, 0, /* frames per second, vblank duration (vector game, so no vblank) */
1, /* 1 CPU slice per frame. */
init_swmathbox, /* Name of initialisation handler */
/* video hardware */
320, 240, { 0, 250, 0, 280 },
0,
256,256, /* Number of colours, length of colour lookup table */
avg_init_colors,
VIDEO_TYPE_VECTOR,
0, /* Handler to initialise video handware */
avg_start_starwars, /* Start video hardware */
avg_stop, /* Stop video hardware */
avg_screenrefresh, /* Do a screen refresh */
/* sound hardware */
0,0,0,0,
{
{
SOUND_POKEY,
&pokey_interface
},
{
SOUND_TMS5220,
&tms5220_interface
}
}
};
static struct MachineDriver empire_machine_driver =
{
/* basic machine hardware */
{
/* Main CPU */
{
CPU_M6809,
1500000, /* 1.5 Mhz CPU clock (Don't know what speed it should be) */
0, /* Memory region #0 */
empire_readmem, empire_writemem,0,0,
interrupt,6 /* 183Hz ? */
/* Increasing number of interrupts per frame speeds game up */
},
/* Sound CPU */
{
CPU_M6809 | CPU_AUDIO_CPU,
1500000, /* 1.5 Mhz CPU clock (Don't know what speed it should be) */
2, /* Memory region #2 */
readmem2,writemem2,0,0,
0, 0,
0, 0 /* no regular interrupts, see sndhrdw/starwars.c */
}
},
30, 0, /* frames per second, vblank duration (vector game, so no vblank) */
1, /* 1 CPU slice per frame. */
empire_init_machine, /* Name of initialization handler */
/* video hardware */
320, 240, { 0, 250, 0, 280 },
0,
256,256, /* Number of colours, length of colour lookup table */
avg_init_colors,
VIDEO_TYPE_VECTOR,
0, /* Handler to initialise video handware */
avg_start_starwars, /* Start video hardware */
avg_stop, /* Stop video hardware */
avg_screenrefresh, /* Do a screen refresh */
/* sound hardware */
0,0,0,0,
{
{
SOUND_POKEY,
&pokey_interface
},
{
SOUND_TMS5220,
&tms5220_interface
}
}
};
/***************************************************************************
Game driver
***************************************************************************/
ROM_START (starwars_rom)
ROM_REGION(0x12000) /* 2 64k ROM spaces */
ROM_LOAD( "136021.105", 0x3000, 0x1000, 0x538e7d2f ) /* 3000-3fff is 4k vector rom */
ROM_LOAD( "136021.114", 0x6000, 0x2000, 0xe75ff867 ) /* ROM 0 bank pages 0 and 1 */
ROM_CONTINUE( 0x10000, 0x2000 )
ROM_LOAD( "136021.102", 0x8000, 0x2000, 0xf725e344 ) /* 8k ROM 1 bank */
ROM_LOAD( "136021.203", 0xa000, 0x2000, 0xf6da0a00 ) /* 8k ROM 2 bank */
ROM_LOAD( "136021.104", 0xc000, 0x2000, 0x7e406703 ) /* 8k ROM 3 bank */
ROM_LOAD( "136021.206", 0xe000, 0x2000, 0xc7e51237 ) /* 8k ROM 4 bank */
/* Load the Mathbox PROM's temporarily into the Vector RAM area */
/* During initialisation they will be converted into useable form */
/* and stored elsewhere. */
ROM_LOAD( "136021.110", 0x0000, 0x0400, 0x01061762 ) /* PROM 0 */
ROM_LOAD( "136021.111", 0x0400, 0x0400, 0x2e619b70 ) /* PROM 1 */
ROM_LOAD( "136021.112", 0x0800, 0x0400, 0x6cfa3544 ) /* PROM 2 */
ROM_LOAD( "136021.113", 0x0c00, 0x0400, 0x03f6acb2 ) /* PROM 3 */
ROM_REGION_DISPOSE(0x1000) /* temporary space for graphics (disposed after conversion) */
/* empty memory region - not used by the game, but needed because the main */
/* core currently always frees region #1 after initialization. */
/* Sound ROMS */
ROM_REGION(0x10000) /* Really only 32k, but it looks like 64K */
ROM_LOAD( "136021.107", 0x4000, 0x2000, 0xdbf3aea2 ) /* Sound ROM 0 */
ROM_RELOAD( 0xc000,0x2000) /* Copied again for */
ROM_LOAD( "136021.208", 0x6000, 0x2000, 0xe38070a8 ) /* Sound ROM 0 */
ROM_RELOAD( 0xe000,0x2000) /* proper int vecs */
ROM_END
/* ****************** EMPIRE *********************************** */
ROM_START (empire_rom)
ROM_REGION(0x20000) /* 64k for code and a buttload for the banked ROMs */
ROM_LOAD( "136031.111", 0x03000, 0x1000, 0xb1f9bd12 ) /* 3000-3fff is 4k vector rom */
ROM_LOAD( "136031.101", 0x06000, 0x2000, 0xef1e3ae5 ) /* good */
ROM_CONTINUE( 0x10000, 0x2000 )
/* $8000 - $9fff : slapstic page */
ROM_LOAD( "136031.102", 0x0a000, 0x2000, 0x62ce5c12 ) /* good */
ROM_CONTINUE( 0x1c000, 0x2000 )
ROM_LOAD( "136031.203", 0x0c000, 0x2000, 0x27b0889b ) /* good */
ROM_CONTINUE( 0x1e000, 0x2000 )
ROM_LOAD( "136031.104", 0x0e000, 0x2000, 0xfd5c725e ) /* good */
ROM_CONTINUE( 0x12000, 0x2000 )
ROM_LOAD( "136031.105", 0x14000, 0x4000, 0xea9e4dce ) /* slapstic 0, 1 */
ROM_LOAD( "136031.106", 0x18000, 0x4000, 0x76d07f59 ) /* slapstic 2, 3 */
/* Load the Mathbox PROM's temporarily into the Vector RAM area */
/* During initialisation they will be converted into useable form */
/* and stored elsewhere. These are 4-bit PROMs; the high nibble is ignored. */
ROM_LOAD( "136031.110", 0x0000, 0x0400, 0xb8d0f69d ) /* PROM 0 */
ROM_LOAD( "136031.109", 0x0400, 0x0400, 0x6a2a4d98 ) /* PROM 1 */
ROM_LOAD( "136031.108", 0x0800, 0x0400, 0x6a76138f ) /* PROM 2 */
ROM_LOAD( "136031.107", 0x0c00, 0x0400, 0xafbf6e01 ) /* PROM 3 */
ROM_REGION_DISPOSE(0x1000) /* temporary space for graphics (disposed after conversion) */
/* empty memory region - not used by the game, but needed because the main */
/* core currently always frees region #1 after initialization. */
/* Sound ROMS */
ROM_REGION(0x10000)
ROM_LOAD( "136031.113", 0x4000, 0x2000, 0x24ae3815 ) /* Sound ROM 0 */
ROM_CONTINUE( 0xc000, 0x2000) /* Copied again for */
ROM_LOAD( "136031.112", 0x6000, 0x2000, 0xca72d341 ) /* Sound ROM 1 */
ROM_CONTINUE( 0xe000, 0x2000) /* proper int vecs */
ROM_END
/* NovRAM Load/Save. In-game DIP switch setting, and Hi-scores */
static int novram_load(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,0)) != 0)
{
osd_fread(f,&RAM[0x4500],256);
osd_fclose(f);
}
return 1;
}
static void novram_save(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[0x4500],256);
osd_fclose(f);
}
}
struct GameDriver starwars_driver =
{
__FILE__,
0,
"starwars",
"Star Wars",
"1983",
"Atari",
"Steve Baines (MAME driver)\nBrad Oliver (MAME driver)\nFrank Palazzolo (MAME driver)\n"VECTOR_TEAM,
0,
&machine_driver,
0,
starwars_rom,
translate_proms, 0, /* ROM decryption, Opcode decryption */
0, /* Sample Array (optional) */
0, /* sound_prom */
input_ports,
color_prom, /* Colour PROM */
0, /* palette */
0, /* colourtable */
ORIENTATION_DEFAULT,
novram_load, novram_save /* Highscore load, save */
};
struct GameDriver empire_driver =
{
__FILE__,
0,
"empire",
"The Empire Strikes Back",
"1985",
"Atari",
"Steve Baines (MAME driver)\nBrad Oliver (MAME driver)\nFrank Palazzolo (MAME driver)\n"VECTOR_TEAM,
GAME_NOT_WORKING,
&empire_machine_driver,
0,
empire_rom,
translate_proms, 0, /* ROM decryption, Opcode decryption */
0, /* Sample Array (optional) */
0, /* sound_prom */
input_ports,
color_prom, /* Colour PROM */
0, /* palette */
0, /* colourtable */
ORIENTATION_DEFAULT,
0, 0 /* Highscore load, save */
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -