亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 2610intf.c

?? 十七種模擬器源代碼 非常有用的作課程設計不可缺少的
?? C
字號:
/***************************************************************************  2610intf.c  The YM2610 emulator supports up to 2 chips.  Each chip has the following connections:  - Status Read / Control Write A  - Port Read / Data Write A  - Control Write B  - Data Write B***************************************************************************/#include "driver.h"#include "sasound.h"#include "fm.h"#if BUILD_YM2610#define sound_name(x) "YM2610"/* use FM.C with stream system */static int stream[MAX_2610];/* Global Interface holder */static const struct YM2610interface *intf;static void *Timer[MAX_2610][2];/*------------------------- TM2610 -------------------------------*//* IRQ Handler */static void IRQHandler(int n,int irq){	if(intf->handler[n]) intf->handler[n](irq);}#ifndef __RAINE__/* Timer overflow callback from timer.c */static void timer_callback_2610(int param){	int n=param&0x7f;	int c=param>>7;/*	logerror("2610 TimerOver %d\n",c); */	Timer[n][c] = 0;	YM2610TimerOver(n,c);}/* TimerHandler from fm.c */static void TimerHandler(int n,int c,int count,double stepTime){	if( count == 0 )	{	/* Reset FM Timer */		if( Timer[n][c] )		{/*			logerror("2610 TimerReset %d\n",c); */	 		timer_remove (Timer[n][c]);			Timer[n][c] = 0;		}	}	else	{	/* Start FM Timer */		double timeSec = (double)count * stepTime;		if( Timer[n][c] == 0 )		{			Timer[n][c] = timer_set (timeSec , (c<<7)|n, timer_callback_2610 );		}	}}#endifstatic void FMTimerInit( void ){	int i;	for( i = 0 ; i < MAX_2610 ; i++ )		Timer[i][0] = Timer[i][1] = 0;}/* update request from fm.c */void YM2610UpdateRequest(int chip){	stream_update(stream[chip],100);}int YM2610_sh_start(const struct YM2610interface *msound){	int i,j;	int rate = audio_sample_rate;	char buf[YM2610_NUMBUF][40];	const char *name[YM2610_NUMBUF];	int mixed_vol,vol[YM2610_NUMBUF],pan[YM2610_NUMBUF];	void *pcmbufa[YM2610_NUMBUF],*pcmbufb[YM2610_NUMBUF];	//int  pcmsizea[YM2610_NUMBUF],pcmsizeb[YM2610_NUMBUF];	intf = msound; 	if( intf->num > MAX_2610 ) return 1;	if (AY8910_sh_start(((struct AY8910interface *)msound))) return 1;	/* Timer Handler set */	FMTimerInit();	/* stream system initialize */	for (i = 0;i < intf->num;i++)	{		/* stream setup */		mixed_vol = intf->volumeFM[i];		/* stream setup */		for (j = 0 ; j < YM2610_NUMBUF ; j++)		{			name[j]=buf[j];			vol[j] = mixed_vol & 0xff;			pan[j] = (mixed_vol>>8) & 0xff;			mixed_vol>>=16;			sprintf(buf[j],"%s #%d Ch%d",sound_name(msound),i,j+1);		}		stream[i] = stream_init_multi(YM2610_NUMBUF,name,rate,16,i,YM2610UpdateOne);		/* volume setup */		for (j = 0 ; j < YM2610_NUMBUF ; j++)		{		  stream_set_volume(stream[i]+j,vol[j]);		  stream_set_pan(stream[i]+j,pan[j]);		}	}	/**** initialize YM2610 ****/	if (YM2610Init(intf->num,intf->baseclock,rate,		           pcmbufa,pcmbufb,		           0,IRQHandler) == 0)		return 0;	/* error */	return 1;}#if BUILD_YM2610Bint YM2610B_sh_start(const struct YM2610interface *msound){	int i,j;	int rate = audio_sample_rate;	char buf[YM2610_NUMBUF][40];	const char *name[YM2610_NUMBUF];	int mixed_vol,vol[YM2610_NUMBUF],pan[YM2610_NUMBUF];	void *pcmbufa[YM2610_NUMBUF],*pcmbufb[YM2610_NUMBUF];	//int  pcmsizea[YM2610_NUMBUF],pcmsizeb[YM2610_NUMBUF];	intf = msound; 	if( intf->num > MAX_2610 ) return 1;	if (AY8910_sh_start((const struct AY8910interface *)msound)) return 1;	/* Timer Handler set */	FMTimerInit();	/* stream system initialize */	for (i = 0;i < intf->num;i++)	{		/* stream setup */		mixed_vol = intf->volumeFM[i];		/* stream setup */		for (j = 0 ; j < YM2610_NUMBUF ; j++)		{			name[j]=buf[j];			vol[j] = mixed_vol & 0xff;			pan[j] = (mixed_vol>>8) & 0xff;			mixed_vol>>=16;			sprintf(buf[j],"%s #%d Ch%d",sound_name(msound),i,j+1);		}		stream[i] = stream_init_multi(YM2610_NUMBUF,name,rate,16,i,YM2610BUpdateOne);		/* volume setup */		for (j = 0 ; j < YM2610_NUMBUF ; j++)		{			stream_set_volume(stream[i]+j,vol[j]);			stream_set_pan(stream[i]+j,pan[j]);		}	}	/**** initialize YM2610 ****/	if (YM2610Init(intf->num,intf->baseclock,rate,		           pcmbufa,pcmbufb,		           0,IRQHandler) == 0)		return 0;	/* error */	return 1;}#endif/************************************************//* Sound Hardware Stop							*//************************************************/void YM2610_sh_stop(void){	YM2610Shutdown();}/* reset */void YM2610_sh_reset(void){	int i;	for (i = 0;i < intf->num;i++)		YM2610ResetChip(i);}/************************************************//* Status Read for YM2610 - Chip 0				*//************************************************/READ_HANDLER( YM2610_status_port_0_A_r ){/*logerror("PC %04x: 2610 S0A=%02X\n",cpu_get_pc(),YM2610Read(0,0)); */#ifdef TEST_OPN   static int ta;   ta^=255;   return ta;#else   static int ta;   if(RaineSoundCard>0){      return YM2610Read(0,0);   }   else{      ta^=255;      return ta;   }#endif}READ_HANDLER( YM2610_status_port_0_B_r ){/*logerror("PC %04x: 2610 S0B=%02X\n",cpu_get_pc(),YM2610Read(0,2)); */#ifdef TEST_OPN   static int ta;   ta^=255;   return ta;#else   static int ta;   if(RaineSoundCard>0){      return YM2610Read(0,2);   }   else{      ta^=255;      return ta;   }#endif}/************************************************//* Status Read for YM2610 - Chip 1				*//************************************************/READ_HANDLER( YM2610_status_port_1_A_r ) {#ifdef TEST_OPN   static int ta;   ta^=255;   return ta;#else   static int ta;   if(RaineSoundCard>0){      return YM2610Read(1,0);   }   else{      ta^=255;      return ta;   }#endif}READ_HANDLER( YM2610_status_port_1_B_r ) {#ifdef TEST_OPN   static int ta;   ta^=255;   return ta;#else   static int ta;   if(RaineSoundCard>0){      return YM2610Read(1,2);   }   else{      ta^=255;      return ta;   }#endif}/************************************************//* Port Read for YM2610 - Chip 0				*//************************************************/READ_HANDLER( YM2610_read_port_0_r ){#ifdef TEST_OPN   static int ta;   ta^=255;   return ta;#else   static int ta;   if(RaineSoundCard>0){      return YM2610Read(0,1);   }   else{      ta^=255;      return ta;   }#endif}/************************************************//* Port Read for YM2610 - Chip 1				*//************************************************/READ_HANDLER( YM2610_read_port_1_r ){	return YM2610Read(1,1);}/************************************************//* Control Write for YM2610 - Chip 0			*//* Consists of 2 addresses						*//************************************************/WRITE_HANDLER( YM2610_control_port_0_A_w ){/*logerror("PC %04x: 2610 Reg A %02X",cpu_get_pc(),data); */#ifdef TEST_OPN   YM2610_WriteReg(0,data);#else   if(RaineSoundCard>0) YM2610Write(0,0,data);#endif}WRITE_HANDLER( YM2610_control_port_0_B_w ){/*logerror("PC %04x: 2610 Reg B %02X",cpu_get_pc(),data); */#ifdef TEST_OPN   YM2610_WriteReg(2,data);#else   if(RaineSoundCard>0) YM2610Write(0,2,data);#endif}/************************************************//* Control Write for YM2610 - Chip 1			*//* Consists of 2 addresses						*//************************************************/WRITE_HANDLER( YM2610_control_port_1_A_w ){#ifdef TEST_OPN   YM2610_WriteReg(0,data);#else   if(RaineSoundCard>0) YM2610Write(1,0,data);#endif}WRITE_HANDLER( YM2610_control_port_1_B_w ){#ifdef TEST_OPN   YM2610_WriteReg(0,data);#else   if(RaineSoundCard>0) YM2610Write(1,2,data);#endif}/************************************************//* Data Write for YM2610 - Chip 0				*//* Consists of 2 addresses						*//************************************************/WRITE_HANDLER( YM2610_data_port_0_A_w ){/*logerror(" =%02X\n",data); */#ifdef TEST_OPN   YM2610_WriteReg(1,data);#else   if(RaineSoundCard>0) YM2610Write(0,1,data);#endif}WRITE_HANDLER( YM2610_data_port_0_B_w ){/*logerror(" =%02X\n",data); */#ifdef TEST_OPN   YM2610_WriteReg(3,data);#else   if(RaineSoundCard>0)	YM2610Write(0,3,data);#endif}/************************************************//* Data Write for YM2610 - Chip 1				*//* Consists of 2 addresses						*//************************************************/WRITE_HANDLER( YM2610_data_port_1_A_w ){#ifdef TEST_OPN   YM2610_WriteReg(1,data);#else   if(RaineSoundCard>0) YM2610Write(1,1,data);#endif}WRITE_HANDLER( YM2610_data_port_1_B_w ){#ifdef TEST_OPN   YM2610_WriteReg(1,data);#else   if(RaineSoundCard>0) YM2610Write(1,3,data);#endif}/**************************************************//*   YM2610 left/right position change (TAITO)    *//**************************************************/int YM2610_get_stream_num( int num ){  return stream[num];}/**************** end of file ****************/#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区二区免费在线观看| 日韩电影网1区2区| 精品久久久久久亚洲综合网| xvideos.蜜桃一区二区| 国产目拍亚洲精品99久久精品| 欧美老肥妇做.爰bbww视频| 欧美精品久久99久久在免费线 | 日韩一区二区三区观看| 欧美精品一二三四| 国产精品午夜在线| 日韩精品1区2区3区| 国产白丝网站精品污在线入口| 午夜av一区二区三区| 国产一区不卡精品| 欧美中文字幕一区二区三区亚洲| 国产69精品久久777的优势| 99re6这里只有精品视频在线观看| 国产精品一区二区x88av| 91麻豆123| 国产人成亚洲第一网站在线播放 | 色天天综合色天天久久| 日韩一区二区精品在线观看| 日韩毛片一二三区| 精品一区二区三区香蕉蜜桃| 99精品欧美一区| 26uuu亚洲综合色| 日韩精品欧美精品| 91在线观看成人| 久久九九久久九九| 日本视频一区二区三区| 在线观看不卡视频| 国产精品国产三级国产有无不卡| 中文字幕一区三区| 国产精品综合在线视频| 欧美一区二区三区公司| 亚洲免费电影在线| 91性感美女视频| 国产人久久人人人人爽| 国产精品自在欧美一区| 精品欧美乱码久久久久久1区2区| 精品国产网站在线观看| 午夜精品久久久久久久99水蜜桃 | 一区二区三区不卡在线观看| 国产精品一区二区在线观看不卡| 国产成人av网站| 精品第一国产综合精品aⅴ| 裸体在线国模精品偷拍| 欧美一区二区三区男人的天堂| 精品欧美久久久| 看片的网站亚洲| 日韩午夜激情免费电影| 秋霞午夜av一区二区三区| 91福利在线免费观看| 一区二区三区高清| 欧美在线小视频| 丝袜国产日韩另类美女| 制服丝袜国产精品| 毛片av中文字幕一区二区| 日韩一级视频免费观看在线| 蜜臀av性久久久久蜜臀aⅴ| 日韩一卡二卡三卡四卡| 精品亚洲国产成人av制服丝袜| 北条麻妃国产九九精品视频| 国产精品久久久久影院老司| 成人av在线网站| 亚洲日本免费电影| 欧美日韩国产高清一区| 日韩av一区二区三区| 2019国产精品| 不卡一区二区在线| 夜夜操天天操亚洲| 日韩欧美激情四射| 精品午夜一区二区三区在线观看| 色久综合一二码| 性久久久久久久| xnxx国产精品| 色综合久久久久久久久久久| 亚洲成人自拍偷拍| 久久在线免费观看| av电影在线观看完整版一区二区| 欧美一激情一区二区三区| 韩国v欧美v日本v亚洲v| 国产精品久久久久一区二区三区共| 全国精品久久少妇| 国产欧美日韩精品在线| 在线国产电影不卡| 韩国精品主播一区二区在线观看| 制服.丝袜.亚洲.中文.综合| 国内不卡的二区三区中文字幕| 欧美人与禽zozo性伦| 麻豆成人91精品二区三区| 亚洲色图色小说| 欧美一二三区在线观看| 成人av免费在线观看| 午夜精品一区二区三区免费视频| 91官网在线观看| 国产主播一区二区| 亚洲成人福利片| 中文av一区特黄| 欧美一区二区观看视频| 色综合天天在线| 国产在线精品免费| 亚洲福利电影网| 亚洲国产成人私人影院tom| 宅男在线国产精品| 91麻豆swag| 成人激情免费网站| 九一九一国产精品| 午夜欧美2019年伦理| 国产精品伦一区| 日韩美女天天操| 5月丁香婷婷综合| 91福利国产精品| 高清不卡一二三区| 国产一区二区三区免费观看| 亚洲成人在线免费| 亚洲色图清纯唯美| 中文字幕日韩av资源站| 久久免费美女视频| 欧美成人一级视频| 日韩欧美国产1| 欧美福利一区二区| 欧美日韩激情一区二区| 91成人免费电影| 91免费在线看| 99精品国产99久久久久久白柏| 午夜精品福利一区二区蜜股av| 制服丝袜日韩国产| 宅男噜噜噜66一区二区66| 欧美亚洲尤物久久| 欧美丝袜丝交足nylons| 色婷婷久久久久swag精品| 91在线观看美女| 日本韩国精品在线| 色老头久久综合| 欧美三级电影一区| 欧美三电影在线| 欧美日韩情趣电影| 欧美精品123区| 欧美一级一区二区| 欧美一级在线视频| 久久久久久免费毛片精品| 久久久久99精品国产片| 国产精品视频一二三| 中文字幕av资源一区| 亚洲视频综合在线| 亚洲一区免费观看| 日韩中文欧美在线| 美女久久久精品| 国产精品一线二线三线精华| 国产99精品国产| 99视频精品在线| 欧美三级日本三级少妇99| 91.com在线观看| 久久久久国产精品麻豆| 亚洲欧美一区二区视频| 亚洲午夜三级在线| 久久精品国产在热久久| 色美美综合视频| 在线不卡一区二区| 久久精品人人做人人爽人人| 日韩毛片高清在线播放| 日本欧美一区二区三区| 国产麻豆精品视频| 91麻豆国产在线观看| 717成人午夜免费福利电影| 久久久亚洲高清| 一区二区高清在线| 麻豆精品国产传媒mv男同| 丁香婷婷综合五月| 欧美日韩精品一区二区三区四区 | 国产一区二区看久久| 成人免费av资源| 欧美精品乱码久久久久久按摩| 成人a区在线观看| 欧美久久久久久久久中文字幕| 一本色道久久综合亚洲精品按摩| 国产精品香蕉一区二区三区| 色综合夜色一区| 久久久久久亚洲综合影院红桃| 欧美va天堂va视频va在线| 亚洲欧洲av色图| 狠狠色综合播放一区二区| 一本久久a久久精品亚洲| 日韩欧美一区电影| 一区二区三国产精华液| 国产成人在线免费观看| 欧美精品久久久久久久多人混战| 欧美日韩中字一区| 欧美激情在线一区二区| 天天综合色天天综合色h| 成人av网在线| 欧美精品一区二区三区蜜臀| 亚洲欧美另类小说| 国产精品亚洲а∨天堂免在线| 国产成人在线视频网址| 欧美一区二区三区不卡| 亚洲人亚洲人成电影网站色| 国产做a爰片久久毛片| 欧美日韩免费一区二区三区|