📄 dec8.c
字号:
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x000000, &charlayout_32k, 0, 4 },
{ 1, 0x008000, &tiles, 64, 4 },
{ 1, 0x088000, &tiles, 192, 4 },
{ 1, 0x108000, &tiles, 128, 4 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo ghostb_gfxdecodeinfo[] =
{
{ 1, 0x00000, &chars_3bpp, 0, 4 },
{ 1, 0x08000, &tiles, 256, 16 },
{ 1, 0x88000, &tiles_r, 512, 16 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo srdarwin_gfxdecodeinfo[] =
{
{ 1, 0x00000, &charlayout_16k,128, 32 },
{ 1, 0x08000, &sr_sprites, 64, 8 },
{ 1, 0x38000, &srdarwin_tiles, 0, 8 },
{ 1, 0x48000, &srdarwin_tiles, 0, 8 },
{ 1, 0x58000, &srdarwin_tiles, 0, 8 },
{ 1, 0x68000, &srdarwin_tiles, 0, 8 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo gondo_gfxdecodeinfo[] =
{
{ 1, 0x00000, &chars_3bpp, 0, 16 }, /* Chars */
{ 1, 0x08000, &tiles, 256, 16 }, /* Sprites */
{ 1, 0x88000, &tiles, 768, 16 }, /* Tiles */
{ -1 } /* end of array */
};
static struct GfxDecodeInfo oscar_gfxdecodeinfo[] =
{
{ 1, 0x00000, &oscar_charlayout, 256, 8 }, /* Chars */
{ 1, 0x08000, &tiles, 0, 16 }, /* Sprites */
{ 1, 0x88000, &tiles, 384, 8 }, /* Tiles */
{ -1 } /* end of array */
};
static struct GfxDecodeInfo lastmiss_gfxdecodeinfo[] =
{
{ 1, 0x00000, &chars_3bpp,0, 4 },
{ 1, 0x08000, &tiles, 256, 16 },
{ 1, 0x88000, &tiles, 768, 16 },
{ -1 } /* end of array */
};
/******************************************************************************/
static struct YM2203interface ym2203_interface =
{
1,
1500000, /* Unknown */
{ YM2203_VOL(30,40) },
{ 0 },
{ 0 },
{ 0 },
{ 0 }
};
/* handler called by the 3812 emulator when the internal timers cause an IRQ */
static void irqhandler(void)
{
cpu_cause_interrupt(1,M6502_INT_IRQ);
}
static void oscar_irqhandler(void)
{
cpu_cause_interrupt(2,M6502_INT_IRQ);
}
static struct YM3526interface ym3526_interface =
{
1, /* 1 chip (no more supported) */
3000000, /* 3 MHz ? */
{ 255 }, /* (not supported) */
irqhandler,
};
static struct YM3526interface oscar_ym3526_interface =
{
1, /* 1 chip (no more supported) */
3000000, /* 3 MHz ? */
{ 255 }, /* (not supported) */
oscar_irqhandler,
};
static struct YM3812interface ym3812_interface =
{
1, /* 1 chip (no more supported) */
3000000, /* 3 MHz ? */
{ 255 }, /* (not supported) */
irqhandler,
};
static struct MSM5205interface msm5205_interface =
{
1, /* 1 chip */
8000, /* 8000Hz playback ? */
csilver_adpcm_int, /* interrupt function */
{ 99 }
};
/******************************************************************************/
static int ghostb_interrupt(void)
{
static int latch[4];
int i8751_out=readinputport(4);
/* Ghostbusters coins are controlled by the i8751 */
if ((i8751_out & 0x8) == 0x8) latch[0]=1;
if ((i8751_out & 0x4) == 0x4) latch[1]=1;
if ((i8751_out & 0x2) == 0x2) latch[2]=1;
if ((i8751_out & 0x1) == 0x1) latch[3]=1;
if (((i8751_out & 0x8) != 0x8) && latch[0]) {latch[0]=0; cpu_cause_interrupt(0,M6809_INT_IRQ); i8751_return=0x8001; } /* Player 1 coin */
if (((i8751_out & 0x4) != 0x4) && latch[1]) {latch[1]=0; cpu_cause_interrupt(0,M6809_INT_IRQ); i8751_return=0x4001; } /* Player 2 coin */
if (((i8751_out & 0x2) != 0x2) && latch[2]) {latch[2]=0; cpu_cause_interrupt(0,M6809_INT_IRQ); i8751_return=0x2001; } /* Player 3 coin */
if (((i8751_out & 0x1) != 0x1) && latch[3]) {latch[3]=0; cpu_cause_interrupt(0,M6809_INT_IRQ); i8751_return=0x1001; } /* Service */
if (nmi_enable) return M6809_INT_NMI; /* VBL */
return 0; /* VBL */
}
static int gondo_interrupt(void)
{
if (nmi_enable)
return M6809_INT_NMI; /* VBL */
return 0; /* VBL */
}
/* Coins generate NMI's */
static int oscar_interrupt(void)
{
static int latch=1;
if ((readinputport(2) & 0x7) == 0x7) latch=1;
if (latch && (readinputport(2) & 0x7) != 0x7) {
latch=0;
cpu_cause_interrupt (0, M6809_INT_NMI);
}
return 0;
}
/******************************************************************************/
static struct MachineDriver cobra_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809,
1250000,
0,
cobra_readmem,cobra_writemem,0,0,
nmi_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
1250000, /* 1.25 Mhz ? */
2, /* memory region #2 */
dec8_s_readmem,dec8_s_writemem,0,0,
ignore_interrupt,0 /* IRQs are caused by the YM3812 */
/* NMIs are caused by the main CPU */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION,
1,
0, /* init machine */
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
gfxdecodeinfo,
256,256,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
0,
dec8_vh_start,
dec8_vh_stop,
dec8_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_YM2203,
&ym2203_interface
},
{
SOUND_YM3812,
&ym3812_interface
}
}
};
static struct MachineDriver ghostb_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809, /* Really HD6309 */
2000000,
0,
ghostb_readmem,ghostb_writemem,0,0,
ghostb_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
1250000, /* 1.25 Mhz ? */
2, /* memory region #2 */
dec8_s_readmem,dec8_s_writemem,0,0,
ignore_interrupt,0 /* IRQs are caused by the YM3812 */
/* NMIs are caused by the main CPU */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0, /* init machine */
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
ghostb_gfxdecodeinfo,
1024,1024,
ghostb_vh_convert_color_prom,
VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK,
0,
dec8_vh_start,
dec8_vh_stop,
ghostb_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_YM2203,
&ym2203_interface
},
{
SOUND_YM3812,
&ym3812_interface
}
}
};
static struct MachineDriver srdarwin_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809, /* MC68A09EP */
2000000,
0,
srdarwin_readmem,srdarwin_writemem,0,0,
nmi_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
1250000, /* 1.25 Mhz ? */
2, /* memory region #2 */
dec8_s_readmem,dec8_s_writemem,0,0,
ignore_interrupt,0 /* IRQs are caused by the YM3812 */
/* NMIs are caused by the main CPU */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0, /* init machine */
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
srdarwin_gfxdecodeinfo,
144,144,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
0,
dec8_vh_start,
dec8_vh_stop,
srdarwin_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_YM2203,
&ym2203_interface
},
{
SOUND_YM3812,
&ym3812_interface
}
}
};
static struct MachineDriver gondo_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809,
3000000,
0,
gondo_readmem,gondo_writemem,0,0,
gondo_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
1250000, /* 1.25 Mhz ? */
2, /* memory region #2 */
dec8_s_readmem,dec8_s_writemem,0,0,
ignore_interrupt,0 /* IRQs are caused by the YM3526 */
/* NMIs are caused by the main CPU */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0, /* init machine */
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
gondo_gfxdecodeinfo,
1024,1024,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
0,
dec8_vh_start,
dec8_vh_stop,
gondo_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_YM2203,
&ym2203_interface
},
{
SOUND_YM3526,
&ym3526_interface
}
}
};
static struct MachineDriver oscar_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809,
2000000,
0,
oscar_readmem,oscar_writemem,0,0,
oscar_interrupt,1
},
{
CPU_M6809,
2000000,
3,
oscar_sub_readmem,oscar_sub_writemem,0,0,
ignore_interrupt,0
},
{
CPU_M6502 | CPU_AUDIO_CPU,
1250000, /* 1.25 Mhz ? */
2, /* memory region #2 */
dec8_s_readmem,dec8_s_writemem,0,0,
ignore_interrupt,0 /* IRQs are caused by the YM3526 */
/* NMIs are caused by the main CPU */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
/* 100, // 100 CPU slices per frame *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -