📄 gottlieb.c
字号:
********************************************************************/
#define MACHINE_DRIVER_SOUND_1(GAMENAME,READMEM,WRITEMEM,GFX) \
static struct MachineDriver GAMENAME##_machine_driver = \
{ \
/* basic machine hardware */ \
{ \
{ \
CPU_I86, \
5000000, /* 5 Mhz */ \
0, \
READMEM,WRITEMEM,0,0, \
gottlieb_interrupt,1 \
}, \
{ \
CPU_M6502 | CPU_AUDIO_CPU , \
3579545/4, /* the board can be set to /2 as well */ \
2, /* memory region #2 */ \
gottlieb_sound_readmem,gottlieb_sound_writemem,0,0, \
ignore_interrupt,1 /* IRQs are triggered by the main CPU */ \
/* NMIs are triggered by the Votrax SC-01 */ \
} \
}, \
61, 1018, /* frames per second, vblank duration */ \
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */ \
0, \
\
/* video hardware */ \
32*8, 32*8, { 0*8, 32*8-1, 0*8, 30*8-1 }, \
GFX, \
16, 16, \
0, \
\
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE, \
0, \
gottlieb_vh_start, \
gottlieb_vh_stop, \
gottlieb_vh_screenrefresh, \
\
/* sound hardware */ \
0,0,0,0, \
{ \
{ \
SOUND_DAC, \
&dac1_interface \
}, \
{ \
SOUND_SAMPLES, /* only for Q*Bert */ \
&samples_interface \
} \
} \
}
#define MACHINE_DRIVER_SOUND_2(GAMENAME,READMEM,WRITEMEM,GFX) \
static struct MachineDriver GAMENAME##_machine_driver = \
{ \
/* basic machine hardware */ \
{ \
{ \
CPU_I86, \
5000000, /* 5 Mhz */ \
0, \
READMEM,WRITEMEM,0,0, \
gottlieb_interrupt,1 \
}, \
{ \
CPU_M6502 | CPU_AUDIO_CPU , \
1000000, /* 1 MHz */ \
2, /* memory region #2 */ \
stooges_sound_readmem,stooges_sound_writemem,0,0, \
ignore_interrupt,1 /* IRQs are triggered by the main CPU */ \
/* NMIs are triggered by the second sound CPU */ \
}, \
{ \
CPU_M6502 | CPU_AUDIO_CPU , \
1000000, /* 1 MHz */ \
3, /* memory region #3 */ \
stooges_sound2_readmem,stooges_sound2_writemem,0,0, \
ignore_interrupt,1 /* IRQs are triggered by the main CPU */ \
/* NMIs are triggered by a programmable timer */ \
} \
}, \
61, 1018, /* frames per second, vblank duration */ \
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */ \
0, \
\
/* video hardware */ \
32*8, 32*8, { 0*8, 32*8-1, 0*8, 30*8-1 }, \
GFX, \
16, 16, \
0, \
\
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE, \
0, \
gottlieb_vh_start, \
gottlieb_vh_stop, \
gottlieb_vh_screenrefresh, \
\
/* sound hardware */ \
0,gottlieb_sh_start,0,0, \
{ \
{ \
SOUND_DAC, \
&dac2_interface \
}, \
{ \
SOUND_AY8910, \
&ay8910_interface \
} \
} \
}
/* games using the revision 1 sound board */
MACHINE_DRIVER_SOUND_1(reactor,reactor_readmem,reactor_writemem,charRAM_gfxdecodeinfo);
MACHINE_DRIVER_SOUND_1(gottlieb,gottlieb_readmem,gottlieb_writemem,charROM_gfxdecodeinfo);
MACHINE_DRIVER_SOUND_1(qbertqub,gottlieb_readmem,gottlieb_writemem,qbertqub_gfxdecodeinfo);
MACHINE_DRIVER_SOUND_1(krull,gottlieb_readmem,gottlieb_writemem,charRAM_gfxdecodeinfo);
/* games using the revision 2 sound board */
MACHINE_DRIVER_SOUND_2(mach3,gottlieb_readmem,usvsthem_writemem,charROM_gfxdecodeinfo);
MACHINE_DRIVER_SOUND_2(usvsthem,gottlieb_readmem,usvsthem_writemem,qbertqub_gfxdecodeinfo);
MACHINE_DRIVER_SOUND_2(stooges,stooges_readmem,stooges_writemem,charRAM_gfxdecodeinfo);
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( reactor_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "rom7", 0x8000, 0x1000, 0xa62d86fd )
ROM_LOAD( "rom6", 0x9000, 0x1000, 0x6ed841f3 )
ROM_LOAD( "rom5", 0xa000, 0x1000, 0xd90576a3 )
ROM_LOAD( "rom4", 0xb000, 0x1000, 0x0155daae )
ROM_LOAD( "rom3", 0xc000, 0x1000, 0xf8881385 )
ROM_LOAD( "rom2", 0xd000, 0x1000, 0x3caba35b )
ROM_LOAD( "rom1", 0xe000, 0x1000, 0x944e1ddf )
ROM_LOAD( "rom0", 0xf000, 0x1000, 0x55930aed )
ROM_REGION_DISPOSE(0x8000) /* temporary space for graphics (disposed after conversion) */
/* 0000-0fff empty */
ROM_LOAD( "fg0", 0x1000, 0x1000, 0xd1f20e15 ) /* sprites */
/* 2000-2fff empty */
ROM_LOAD( "fg1", 0x3000, 0x1000, 0x18396c57 )
/* 4000-4fff empty */
ROM_LOAD( "fg2", 0x5000, 0x1000, 0x5489605a )
/* 6000-6fff empty */
ROM_LOAD( "fg3", 0x7000, 0x1000, 0x8416ad53 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "snd1", 0xf000, 0x800, 0xd958a0fd )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "snd2", 0xf800, 0x800, 0x5dc86942 )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( mplanets_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "rom4", 0x6000, 0x2000, 0x5402077f )
ROM_LOAD( "rom3", 0x8000, 0x2000, 0x5d18d740 )
ROM_LOAD( "rom2", 0xa000, 0x2000, 0x960c3bb1 )
ROM_LOAD( "rom1", 0xc000, 0x2000, 0xeb515f10 )
ROM_LOAD( "rom0", 0xe000, 0x2000, 0x74de78aa )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "bg0", 0x0000, 0x1000, 0x709aa24c ) /* chars */
ROM_LOAD( "bg1", 0x1000, 0x1000, 0x4921e345 )
ROM_LOAD( "fg3", 0x2000, 0x2000, 0xc990b39f ) /* sprites */
ROM_LOAD( "fg2", 0x4000, 0x2000, 0x735e2522 )
ROM_LOAD( "fg1", 0x6000, 0x2000, 0x6456cc1c )
ROM_LOAD( "fg0", 0x8000, 0x2000, 0xa920e325 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "snd1", 0xf000, 0x800, 0x453193a1 )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "snd2", 0xf800, 0x800, 0xf5ffc98f )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( qbert_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "qb-rom2.bin", 0xa000, 0x2000, 0xfe434526 )
ROM_LOAD( "qb-rom1.bin", 0xc000, 0x2000, 0x55635447 )
ROM_LOAD( "qb-rom0.bin", 0xe000, 0x2000, 0x8e318641 )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "qb-bg0.bin", 0x0000, 0x1000, 0x7a9ba824 ) /* chars */
ROM_LOAD( "qb-bg1.bin", 0x1000, 0x1000, 0x22e5b891 )
ROM_LOAD( "qb-fg3.bin", 0x2000, 0x2000, 0xdd436d3a ) /* sprites */
ROM_LOAD( "qb-fg2.bin", 0x4000, 0x2000, 0xf69b9483 )
ROM_LOAD( "qb-fg1.bin", 0x6000, 0x2000, 0x224e8356 )
ROM_LOAD( "qb-fg0.bin", 0x8000, 0x2000, 0x2f695b85 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, 0x15787c07 )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, 0x58437508 )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( qbertjp_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "qbj-rom2.bin", 0xa000, 0x2000, 0x67bb1cb2 )
ROM_LOAD( "qbj-rom1.bin", 0xc000, 0x2000, 0xc61216e7 )
ROM_LOAD( "qbj-rom0.bin", 0xe000, 0x2000, 0x69679d5c )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "qb-bg0.bin", 0x0000, 0x1000, 0x7a9ba824 ) /* chars */
ROM_LOAD( "qb-bg1.bin", 0x1000, 0x1000, 0x22e5b891 )
ROM_LOAD( "qb-fg3.bin", 0x2000, 0x2000, 0xdd436d3a ) /* sprites */
ROM_LOAD( "qb-fg2.bin", 0x4000, 0x2000, 0xf69b9483 )
ROM_LOAD( "qb-fg1.bin", 0x6000, 0x2000, 0x224e8356 )
ROM_LOAD( "qb-fg0.bin", 0x8000, 0x2000, 0x2f695b85 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, 0x15787c07 )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, 0x58437508 )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( sqbert_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "qb-rom2.bin", 0xa000, 0x2000, 0x1e3d4038 )
ROM_LOAD( "qb-rom1.bin", 0xc000, 0x2000, 0xeaf3076c )
ROM_LOAD( "qb-rom0.bin", 0xe000, 0x2000, 0x61260a7e )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "qb-bg0.bin", 0x0000, 0x1000, 0xc3118eef ) /* chars */
ROM_LOAD( "qb-bg1.bin", 0x1000, 0x1000, 0x4f6d8075 )
ROM_LOAD( "qb-fg3.bin", 0x2000, 0x2000, 0xee595eda ) /* sprites */
ROM_LOAD( "qb-fg2.bin", 0x4000, 0x2000, 0x59884c78 )
ROM_LOAD( "qb-fg1.bin", 0x6000, 0x2000, 0x2a60e3ad )
ROM_LOAD( "qb-fg0.bin", 0x8000, 0x2000, 0xb11ad9d8 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, 0x15787c07 )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, 0x58437508 )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( qbertqub_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "qq-rom3.bin", 0x8000, 0x2000, 0xc4dbdcd7 )
ROM_LOAD( "qq-rom2.bin", 0xa000, 0x2000, 0x21a6c6cc )
ROM_LOAD( "qq-rom1.bin", 0xc000, 0x2000, 0x63e6c43d )
ROM_LOAD( "qq-rom0.bin", 0xe000, 0x2000, 0x8ddbe438 )
ROM_REGION_DISPOSE(0x12000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "qq-bg0.bin", 0x0000, 0x1000, 0x050badde ) /* chars */
ROM_LOAD( "qq-bg1.bin", 0x1000, 0x1000, 0x8875902f )
ROM_LOAD( "qq-fg3.bin", 0x2000, 0x4000, 0x91a949cc ) /* sprites */
ROM_LOAD( "qq-fg2.bin", 0x6000, 0x4000, 0x782d9431 )
ROM_LOAD( "qq-fg1.bin", 0xa000, 0x4000, 0x71c3ac4c )
ROM_LOAD( "qq-fg0.bin", 0xe000, 0x4000, 0x6192853f )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, 0x15787c07 )
ROM_RELOAD( 0x7000, 0x800) /* A15 is not decoded */
ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, 0x58437508 )
ROM_RELOAD( 0x7800, 0x800) /* A15 is not decoded */
ROM_END
ROM_START( krull_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "ram2.bin", 0x1000, 0x1000, 0x302feadf )
ROM_LOAD( "ram4.bin", 0x2000, 0x1000, 0x79355a60 )
ROM_LOAD( "rom4.bin", 0x6000, 0x2000, 0x2b696394 )
ROM_LOAD( "rom3.bin", 0x8000, 0x2000, 0x14b0ee42 )
ROM_LOAD( "rom2.bin", 0xa000, 0x2000, 0xb5fad94a )
ROM_LOAD( "rom1.bin", 0xc000, 0x2000, 0x1ad956a3 )
ROM_LOAD( "rom0.bin", 0xe000, 0x2000, 0xa466afae )
ROM_REGION_DISPOSE(0x8000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "fg3.bin", 0x0000, 0x2000, 0x82d77a45 ) /* sprites */
ROM_LOAD( "fg2.bin", 0x2000, 0x2000, 0x25a24317 )
ROM_LOAD( "fg1.bin", 0x4000, 0x2000, 0x7e3ad7b0 )
ROM_LOAD( "fg0.bin", 0x6000, 0x2000, 0x7402dc19 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "snd1.bin", 0xe000, 0x1000, 0xdd2b30b4 )
ROM_RELOAD(0x6000, 0x1000) /* A15 is not decoded */
ROM_LOAD( "snd2.bin", 0xf000, 0x1000, 0x8cab901b )
ROM_RELOAD(0x7000, 0x1000) /* A15 is not decoded */
ROM_END
ROM_START( mach3_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "m3rom4.bin", 0x6000, 0x2000, 0x8bfd5a44 )
ROM_LOAD( "m3rom3.bin", 0x8000, 0x2000, 0xb1b045af )
ROM_LOAD( "m3rom2.bin", 0xa000, 0x2000, 0xfbdfb03d )
ROM_LOAD( "m3rom1.bin", 0xc000, 0x2000, 0x3b0ba80b )
ROM_LOAD( "m3rom0.bin", 0xe000, 0x2000, 0x70c12bf4 )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "mach3bg0.bin", 0x0000, 0x1000, 0xea2f5257 )
ROM_LOAD( "mach3bg1.bin", 0x1000, 0x1000, 0xf543e4ce )
ROM_LOAD( "mach3fg3.bin", 0x2000, 0x2000, 0x472128b4 )
ROM_LOAD( "mach3fg2.bin", 0x4000, 0x2000, 0x2a59e99e )
ROM_LOAD( "mach3fg1.bin", 0x6000, 0x2000, 0x9b88767b )
ROM_LOAD( "mach3fg0.bin", 0x8000, 0x2000, 0x0bae12a5 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "m3drom1.bin", 0xf000, 0x1000, 0xa6e29212 )
ROM_REGION(0x10000) /* 64k for second sound cpu */
ROM_LOAD( "m3yrom1.bin", 0xf000, 0x1000, 0xeddf8872 )
ROM_END
ROM_START( usvsthem_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "usvs.rm4", 0x6000, 0x2000, 0x0d7a4072 )
ROM_LOAD( "usvs.rm3", 0x8000, 0x2000, 0x6f32a671 )
ROM_LOAD( "usvs.rm2", 0xa000, 0x2000, 0x36770716 )
ROM_LOAD( "usvs.rm1", 0xc000, 0x2000, 0x697bc989 )
ROM_LOAD( "usvs.rm0", 0xe000, 0x2000, 0x30cf6bd9 )
ROM_REGION_DISPOSE(0x12000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "usvs.bg0", 0x0000, 0x1000, 0x8a0de09f )
ROM_LOAD( "usvs.bg1", 0x1000, 0x1000, 0x6fb64d3c )
ROM_LOAD( "usvs.fg3", 0x2000, 0x4000, 0x98703015 )
ROM_LOAD( "usvs.fg2", 0x6000, 0x4000, 0xd3990707 )
ROM_LOAD( "usvs.fg1", 0xa000, 0x4000, 0xa2057430 )
ROM_LOAD( "usvs.fg0", 0xe000, 0x4000, 0x7734e53f )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "usvsdrom.1", 0xe000, 0x2000, 0xc0b5cab0 )
ROM_REGION(0x10000) /* 64k for second sound cpu */
ROM_LOAD( "usvsyrom.1", 0xe000, 0x2000, 0xc3d245ca )
ROM_END
ROM_START( stooges_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "gv113ram.4", 0x2000, 0x1000, 0x533bff2a )
ROM_LOAD( "gv113rom.4", 0x6000, 0x2000, 0x8b6e52b8 )
ROM_LOAD( "gv113rom.3", 0x8000, 0x2000, 0xb816d8c4 )
ROM_LOAD( "gv113rom.2", 0xa000, 0x2000, 0xb45b2a79 )
ROM_LOAD( "gv113rom.1", 0xc000, 0x2000, 0x34ab051e )
ROM_LOAD( "gv113rom.0", 0xe000, 0x2000, 0xab124329 )
ROM_REGION_DISPOSE(0x8000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "gv113fg3", 0x0000, 0x2000, 0x28071212 ) /* sprites */
ROM_LOAD( "gv113fg2", 0x2000, 0x2000, 0x9fa3dfde )
ROM_LOAD( "gv113fg1", 0x4000, 0x2000, 0xfb223854 )
ROM_LOAD( "gv113fg0", 0x6000, 0x2000, 0x95762c53 )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "drom1", 0xe000, 0x2000, 0x87a9fa10 )
ROM_REGION(0x10000) /* 64k for second sound cpu */
ROM_LOAD( "yrom2", 0xc000, 0x2000, 0x90f9c940 )
ROM_LOAD( "yrom1", 0xe000, 0x2000, 0x55f8ab30 )
ROM_END
ROM_START( curvebal_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "cb-rom-3.chp", 0x8000, 0x2000, 0x72ad4d45 )
ROM_LOAD( "cb-rom-2.chp", 0xa000, 0x2000, 0xd46c3db5 )
ROM_LOAD( "cb-rom-1.chp", 0xc000, 0x2000, 0xeb1e08bd )
ROM_LOAD( "cb-rom-0.chp", 0xe000, 0x2000, 0x401fc7e3 )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "cb-bg-0.chp", 0x0000, 0x1000, 0xd666a179 )
ROM_LOAD( "cb-bg-1.chp", 0x1000, 0x1000, 0x5e34ff4e )
ROM_LOAD( "cb-fg-3.chp", 0x2000, 0x2000, 0x9c9452fe )
ROM_LOAD( "cb-fg-2.chp", 0x4000, 0x2000, 0x065131af )
ROM_LOAD( "cb-fg-1.chp", 0x6000, 0x2000, 0x1b7b7f94 )
ROM_LOAD( "cb-fg-0.chp", 0x8000, 0x2000, 0xe3a8230e )
ROM_REGION(0x10000) /* 64k for sound cpu */
ROM_LOAD( "yrom.sbd", 0xe000, 0x1000, 0x4c313d9b )
ROM_LOAD( "drom.sbd", 0xf000, 0x1000, 0xcecece88 )
ROM_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -