📄 taitosnd.c
字号:
/*** 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 + -