⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taitosnd.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 3 页
字号:
/*** This use WarriorBlade ****/void Taito2610_FrameWarriorB(void){  cpu_execute_cycles(CPU_Z80_0, 7000000/60);			// Sound Z80  /*#ifdef RAINE_DEBUG    print_debug("Z80PC0:%04x\n",z80pc);    #endif*/  cpu_interrupt(CPU_Z80_0, 0x0038);    //saSetVolume( YM2610_get_stream_num(0), 0xaf );  //saSetPan( YM2610_get_stream_num(0), 0x00 );  //saSetVolume( YM2610_get_stream_num(0)+1, 0xaf );  //saSetPan( YM2610_get_stream_num(0)+1, 0xff );  //print_ingame(120,"nowPan %02x %02x %02x %02x", taitoym2610pan[0], taitoym2610pan[1], taitoym2610pan[2], taitoym2610pan[3] );}/**** This use NinjaWarriors ****/void Taito2610_FrameNinjaW(void){  cpu_execute_cycles(CPU_Z80_0, 4500000/60);			// Sound Z80  /*#ifdef RAINE_DEBUG    print_debug("Z80PC0:%04x\n",z80pc);    #endif*/  cpu_interrupt(CPU_Z80_0, 0x0038);    saSetVolume( YM2610_get_stream_num(0), 0xbf );  saSetPan( YM2610_get_stream_num(0), 0x80 );  saSetVolume( YM2610_get_stream_num(0)+1, 0xbf );  saSetPan( YM2610_get_stream_num(0)+1, 0x80 );  //print_ingame(120,"nowPan %02x %02x %02x %02x", taitoym2610pan[0], taitoym2610pan[1], taitoym2610pan[2], taitoym2610pan[3] );}/*** This use Rastan saga2 ****/void Taito2610_FrameRastan2(void){  cpu_execute_cycles(CPU_Z80_0, 5000000/60);			// Sound Z80  /*#ifdef RAINE_DEBUG    print_debug("Z80PC0:%04x\n",z80pc);    #endif*/  cpu_interrupt(CPU_Z80_0, 0x38);  #if 0    saSetVolume( YM2610_get_stream_num(0), 0xaf );  saSetPan( YM2610_get_stream_num(0), 0x00 );  saSetVolume( YM2610_get_stream_num(0)+1, 0xaf );  saSetPan( YM2610_get_stream_num(0)+1, 0xff );#endif}/*** This use Cameltry ****/void Taito2610_FrameCameltry(void){  cpu_execute_cycles(CPU_Z80_0, 4200000/60);			// Sound Z80  cpu_interrupt(CPU_Z80_0, 0x38);  #if 0    saSetVolume( YM2610_get_stream_num(0), 0xaf );  saSetPan( YM2610_get_stream_num(0), 0x00 );  saSetVolume( YM2610_get_stream_num(0)+1, 0xaf );  saSetPan( YM2610_get_stream_num(0)+1, 0xff );#endif  }/*******************************************************//*    YM2610 mem map control (normal type)             *//*******************************************************/void TaitoYM2610Memmap( void ){  AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);  AddZ80AReadByte(0x0000, 0x7FFF, NULL,				NULL);			// BANK ROM  AddZ80AReadByte(0xC000, 0xDFFF, NULL,				Z80ROM+0x00C000);	// Z80 RAM  AddZ80AReadByte(0xE000, 0xE003, YM2610ReadZ80,		NULL);			// YM2610  AddZ80AReadByte(0xE200, 0xE201, tc0140syt_read_sub_z80,	NULL);			// 68000 COMM  AddZ80AReadByte(0xEA00, 0xEA00, TaitoYM2610Test,		NULL);  AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,		NULL);  AddZ80AReadByte(    -1,     -1, NULL,				NULL);  AddZ80AWriteByte(0xC000, 0xDFFF, NULL,			Z80ROM+0x00C000);	// Z80 RAM  AddZ80AWriteByte(0xE000, 0xE003, YM2610WriteZ80,		NULL);			// YM2610  AddZ80AWriteByte(0xE200, 0xE201, tc0140syt_write_sub_z80,	NULL);			// 68000 COMM  AddZ80AWriteByte(0xE400, 0xE403, Pan2610WriteZ80,		NULL);			// PANNING  AddZ80AWriteByte(0xF200, 0xF200, TaitoSoundSetBank,		NULL);			// BANK SELECT  AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,		NULL);  AddZ80AWriteByte(    -1,     -1, NULL,			NULL);  AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,		NULL);  AddZ80AReadPort(  -1,   -1, NULL,			NULL);  AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,		NULL);  AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,		NULL);  AddZ80AWritePort(  -1,   -1, NULL,			NULL);  AddZ80AInit();  TaitoSoundSetBank(0,1);  taitoym2610pan[0] = 0x00;  taitoym2610pan[1] = 0x00;  taitoym2610pan[2] = 0x00;  taitoym2610pan[3] = 0x00;  tc0140syt_reset();}/*******************************************************//*    YM2610 mem map control (speed patch)             *//*******************************************************/void TaitoYM2610MemmapSP( void ){  AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);  AddZ80AReadByte(0x0000, 0x7FFF, NULL,				NULL);			// BANK ROM  AddZ80AReadByte(0xC000, 0xDFFF, NULL,				Z80ROM+0x00C000);	// Z80 RAM  AddZ80AReadByte(0xE000, 0xE003, YM2610ReadZ80SP,		NULL);			// YM2610  AddZ80AReadByte(0xE200, 0xE201, tc0140syt_read_sub_z80,	NULL);			// 68000 COMM  AddZ80AReadByte(0xEA00, 0xEA00, TaitoYM2610Test,		NULL);  AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,		NULL);  AddZ80AReadByte(    -1,     -1, NULL,				NULL);  AddZ80AWriteByte(0xC000, 0xDFFF, NULL,			Z80ROM+0x00C000);	// Z80 RAM  AddZ80AWriteByte(0xE000, 0xE003, YM2610WriteZ80,		NULL);			// YM2610  AddZ80AWriteByte(0xE200, 0xE201, tc0140syt_write_sub_z80,	NULL);			// 68000 COMM  AddZ80AWriteByte(0xE400, 0xE403, Pan2610WriteZ80,		NULL);			// PANNING  AddZ80AWriteByte(0xF200, 0xF200, TaitoSoundSetBank,		NULL);			// BANK SELECT  AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,		NULL);  AddZ80AWriteByte(    -1,     -1, NULL,			NULL);  AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,		NULL);  AddZ80AReadPort(  -1,   -1, NULL,			NULL);  AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,		NULL);  AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,		NULL);  AddZ80AWritePort(  -1,   -1, NULL,			NULL);  AddZ80AInit();  TaitoSoundSetBank(0,1);  taitoym2610pan[0] = 0x00;  taitoym2610pan[1] = 0xff;  taitoym2610pan[2] = 0xff;  taitoym2610pan[3] = 0x00;  tc0140syt_reset();}/*******************************************************//*    YM2610 mem map control (normal type)             *//*******************************************************/void TaitoYM2610MemmapOffsetVol( void ){  AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);  AddZ80AReadByte(0x0000, 0x7FFF, NULL,				NULL);			// BANK ROM  AddZ80AReadByte(0xC000, 0xDFFF, NULL,				Z80ROM+0x00C000);	// Z80 RAM  AddZ80AReadByte(0xE000, 0xE003, YM2610ReadZ80,		NULL);			// YM2610  AddZ80AReadByte(0xE200, 0xE201, tc0140syt_read_sub_z80,	NULL);			// 68000 COMM  AddZ80AReadByte(0xEA00, 0xEA00, TaitoYM2610Test,		NULL);  AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,		NULL);  AddZ80AReadByte(    -1,     -1, NULL,				NULL);  AddZ80AWriteByte(0xC000, 0xDFFF, NULL,			Z80ROM+0x00C000);	// Z80 RAM  AddZ80AWriteByte(0xE000, 0xE003, YM2610WriteZ80,		NULL);			// YM2610  AddZ80AWriteByte(0xE200, 0xE201, tc0140syt_write_sub_z80,	NULL);			// 68000 COMM  AddZ80AWriteByte(0xE400, 0xE403, Pan2610WriteZ80_OffsetVol,	NULL);			// PANNING  AddZ80AWriteByte(0xF200, 0xF200, TaitoSoundSetBank,		NULL);			// BANK SELECT  AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,		NULL);  AddZ80AWriteByte(    -1,     -1, NULL,			NULL);  AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,		NULL);  AddZ80AReadPort(  -1,   -1, NULL,			NULL);  AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,		NULL);  AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,		NULL);  AddZ80AWritePort(  -1,   -1, NULL,			NULL);  AddZ80AInit();  TaitoSoundSetBank(0,1);  taitoym2610pan[0] = 0x00;  taitoym2610pan[1] = 0x00;  taitoym2610pan[2] = 0x00;  taitoym2610pan[3] = 0x00;  tc0140syt_reset();}/*******************************************************//*    YM2610 sound system init                         *//*******************************************************/void AddTaitoYM2610(UINT32 p1, UINT32 p2, UINT32 romsize){  // Apply Speed Patch  // -----------------#ifdef RAINE_DEBUG  print_debug( "AddYM2610System\n" );#endif     Z80ROM[p1+0]=0xD3;	// OUTA (AAh)   Z80ROM[p1+1]=0xAA;	//     SetStopZ80Mode2( (UINT16) p2);     // Setup rom banking system   // ------------------------     AddTaitoSoundBanking( Z80ROM, romsize );     // Setup Z80 memory map   // --------------------     TaitoYM2610Memmap();  #ifdef RAINE_DEBUG  print_debug( "AddYM2610System end\n" );#endif}/*******************************************************//*    YM2610B sound system init                        *//*******************************************************/void AddTaitoYM2610B(UINT32 p1, UINT32 p2, UINT32 romsize){  // Apply Speed Patch  // -----------------#ifdef RAINE_DEBUG  print_debug( "AddYM2610System\n" );#endif    Z80ROM[p1+0]=0xD3;	// OUTA (AAh)  Z80ROM[p1+1]=0xAA;	//    SetStopZ80Mode2( (UINT16) p2);    // Setup rom banking system  // ------------------------    AddTaitoSoundBanking( Z80ROM, romsize );    // Setup Z80 memory map  // --------------------    TaitoYM2610Memmap();  #ifdef RAINE_DEBUG  print_debug( "AddYM2610System end\n" );#endif}/*******************************************************//*    YM2610B sound system init                        *//*******************************************************/void AddTaitoYM2610B_OffsetVol(UINT32 p1, UINT32 p2, UINT32 romsize, int vol){  // Apply Speed Patch  // -----------------#ifdef RAINE_DEBUG  print_debug( "AddYM2610System\n" );#endif    Z80ROM[p1+0]=0xD3;	// OUTA (AAh)  Z80ROM[p1+1]=0xAA;	//    SetStopZ80Mode2( (UINT16) p2);    // Setup rom banking system  // ------------------------    AddTaitoSoundBanking( Z80ROM, romsize );    // Setup Z80 memory map  // --------------------    TaitoYM2610MemmapOffsetVol();    Pan2610_OffsetVol( vol );	/* set volume shift size */  #ifdef RAINE_DEBUG  print_debug( "AddYM2610System end\n" );#endif}/************************************************************//************************************************************/void RemoveTaitoYM2610(void){   RemoveTaitoSoundBanking();}#if 0static void TaitoYM2151WriteBank( int ctw ){  //print_ingame(120,"NowBank = %02x", ctw );  TaitoSoundSetBank( 0, (UINT8) (ctw&0x03) ); /* bank change */}static void TaitoYM2151_irq_handler(void){  //print_ingame(120,"IRQ" );  //cpu_interrupt(CPU_Z80_0, 0x0038);}#endifstatic struct YM2151interface ym2151_interface ={  1,			// 1 chip  4000000,		// 4 MHz  { YM3012_VOL(160,OSD_PAN_LEFT,160,OSD_PAN_RIGHT) },  { NULL },  { NULL }};struct SOUND_INFO taito_ym2151_sound[] ={   { SOUND_YM2151J, &ym2151_interface,  },   { 0,             NULL,               },};void Taito2151_Frame(void){   if(tc0140syt_want_nmi()) cpu_int_nmi(CPU_Z80_0);   cpu_execute_cycles(CPU_Z80_0, CPU_FRAME_MHz(8,60));	// Z80 8MHz (60fps)   /*#ifdef RAINE_DEBUG     print_debug("Z80PC0:%04x\n",z80pc);   #endif*/   cpu_interrupt(CPU_Z80_0, 0x38);}void Taito2151_FrameFast(void){   if(tc0140syt_want_nmi()!=0) cpu_int_nmi(CPU_Z80_0);   cpu_execute_cycles(CPU_Z80_0, CPU_FRAME_MHz(6,60));	// Z80 6MHz (60fps)   /*#ifdef RAINE_DEBUG     print_debug("Z80PC0:%04x\n",z80pc);   #endif*/   cpu_interrupt(CPU_Z80_0, 0x38);}void Taito2151_FrameRI(void){   if(tc0140syt_want_nmi()!=0){      if(tc0140syt_get_port01()!=0x00){		// Temp fix for Rainbow Islands         cpu_int_nmi(CPU_Z80_0);      }   }   cpu_execute_cycles(CPU_Z80_0, CPU_FRAME_MHz(6,60));	// Z80 6MHz (60fps)   /*#ifdef RAINE_DEBUG     print_debug("Z80PC0:%04x\n",z80pc);   #endif*/   cpu_interrupt(CPU_Z80_0, 0x38);}void Taito2151_Frame_xsystem(void){   cpu_execute_cycles(CPU_Z80_0, CPU_FRAME_MHz(8,60));	// Z80 8MHz (60fps)   cpu_interrupt(CPU_Z80_0, 0x38);}void AddTaitoYM2151(UINT32 p1, UINT32 p2, UINT32 romsize, UINT8 *adpcmA, UINT8 *adpcmB){   // Apply Speed Patch   // -----------------   Z80ROM[p1+0]=0xD3;	// OUTA (AAh)   Z80ROM[p1+1]=0xAA;	//   SetStopZ80Mode2( (UINT16) p2);   // Setup rom banking system   // ------------------------   AddTaitoSoundBanking(Z80ROM, romsize);   // Setup Z80 memory map   // --------------------   AddZ80AROMBase(Z80ROM, 0x38, 0x66);   AddZ80AReadByte(0x0000, 0x7FFF, NULL,			NULL);			// BANK ROM   AddZ80AReadByte(0x8000, 0x8FFF, NULL,			Z80ROM+0x008000);	// Z80 RAM   AddZ80AReadByte(0x9000, 0x9001, YM2151ReadZ80,		NULL);			// YM2151   AddZ80AReadByte(0xA000, 0xA001, tc0140syt_read_sub_z80,	NULL);			// 68000 COMM   AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,		NULL);   AddZ80AReadByte(-1, -1, NULL, NULL);   AddZ80AWriteByte(0x8000, 0x8FFF, NULL,			Z80ROM+0x008000);	// Z80 RAM   AddZ80AWriteByte(0x9000, 0x9001, YM2151TaitoWriteZ80,	NULL);			// YM2151+BANKING   AddZ80AWriteByte(0xA000, 0xA001, tc0140syt_write_sub_z80,	NULL);			// 68000 COMM   if(adpcmA!=NULL){   AddZ80AWriteByte(0xB000, 0xB006, adpcmA,			NULL);			// ADPCM CHANNEL A   }   if(adpcmB!=NULL){   AddZ80AWriteByte(0xC000, 0xC006, adpcmB,			NULL);			// ADPCM CHANNEL B   }   AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,		NULL);   AddZ80AWriteByte(-1, -1, NULL, NULL);   AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,		NULL);   AddZ80AReadPort(  -1,   -1, NULL,			NULL);   AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,		NULL);   AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,		NULL);   AddZ80AWritePort(  -1,   -1, NULL,			NULL);   AddZ80AInit();   TaitoSoundSetBank(0,1);   tc0140syt_reset();}void AddTaitoYM2151_Timer(UINT32 p1, UINT32 p2, UINT32 romsize, UINT8 *adpcmA, UINT8 *adpcmB){   // Apply Speed Patch   // -----------------   Z80ROM[p1+0]=0xD3;	// OUTA (AAh)   Z80ROM[p1+1]=0xAA;	//   SetStopZ80Mode2( (UINT16) p2);   // Setup rom banking system   // ------------------------   AddTaitoSoundBanking(Z80ROM, romsize);   // Setup Z80 memory map   // --------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -