1745 lines
76 KiB
C#
1745 lines
76 KiB
C#
|
using MAME.Core;
|
|||
|
using System;
|
|||
|
|
|||
|
namespace MAME.Core
|
|||
|
{
|
|||
|
public unsafe partial class Sound
|
|||
|
{
|
|||
|
public static EmuTimer.emu_timer sound_update_timer;
|
|||
|
private static int[] leftmix, rightmix;
|
|||
|
private static byte[] finalmixb;
|
|||
|
private static int sound_muted;
|
|||
|
public static ushort[] latched_value, utempdata;
|
|||
|
public static Action sound_update;
|
|||
|
//public static SecondaryBuffer buf2;
|
|||
|
private static int stream_buffer_in;
|
|||
|
|
|||
|
#region 抽象出去
|
|||
|
static Action<int, byte[]> Act_BufferWirte;
|
|||
|
static Action<int> Act_SetVolume;
|
|||
|
static Action<byte[], int> Act_SubmitSamples;
|
|||
|
public delegate void DGetCurrentPosition(out int play_position, out int write_position);
|
|||
|
public static event DGetCurrentPosition Act_DGetCurrentPosition;
|
|||
|
|
|||
|
public static void BindFunc(ISoundPlayer Isp)
|
|||
|
{
|
|||
|
Act_BufferWirte -= Act_BufferWirte;
|
|||
|
Act_SetVolume -= Act_SetVolume;
|
|||
|
Act_SubmitSamples -= Act_SubmitSamples;
|
|||
|
Act_DGetCurrentPosition -= Act_DGetCurrentPosition;
|
|||
|
|
|||
|
|
|||
|
Act_BufferWirte += Isp.BufferWirte;
|
|||
|
Act_SetVolume += Isp.SetVolume;
|
|||
|
Act_SubmitSamples += Isp.SubmitSamples;
|
|||
|
Act_DGetCurrentPosition += Isp.GetCurrentPosition;
|
|||
|
}
|
|||
|
|
|||
|
static void BufferWirte(int Off, byte[] Data)
|
|||
|
{
|
|||
|
Act_BufferWirte.Invoke(Off, Data);
|
|||
|
}
|
|||
|
|
|||
|
static void SubmitSamples(byte[] buffer, int samples_a)
|
|||
|
{
|
|||
|
Act_SubmitSamples.Invoke(buffer, samples_a);
|
|||
|
}
|
|||
|
|
|||
|
public static void SetVolume(int Vol)
|
|||
|
{
|
|||
|
Act_SetVolume.Invoke(Vol);
|
|||
|
}
|
|||
|
|
|||
|
static void GetCurrentPosition(out int play_position, out int write_position)
|
|||
|
{
|
|||
|
play_position = 0;
|
|||
|
write_position = 0;
|
|||
|
Act_DGetCurrentPosition?.Invoke(out play_position, out write_position);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
public static void sound_init()
|
|||
|
{
|
|||
|
leftmix = new int[0x3c0];
|
|||
|
rightmix = new int[0x3c0];
|
|||
|
finalmixb = new byte[0xf00];
|
|||
|
sound_muted = 0;
|
|||
|
//buf2.Play(0, BufferPlayFlags.Looping);
|
|||
|
last_update_second = 0;
|
|||
|
//WavWrite.CreateSoundFile(@"\VS2008\compare1\compare1\bin\Debug\2.wav");
|
|||
|
Atime update_frequency = new Atime(0, Attotime.ATTOSECONDS_PER_SECOND / 50);
|
|||
|
switch (Machine.sBoard)
|
|||
|
{
|
|||
|
case "CPS-1":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
sound_update = sound_updateC;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
OKI6295.okim6295_start();
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
okistream = new sound_stream(1000000 / 132, 0, 1, OKI6295.okim6295_update);
|
|||
|
mixerstream = new sound_stream(48000, 3, 0, null);
|
|||
|
break;
|
|||
|
case "CPS-1(QSound)":
|
|||
|
case "CPS2":
|
|||
|
sound_update = sound_updateQ;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
QSound.qsound_start();
|
|||
|
qsoundstream = new sound_stream(4000000 / 166, 0, 2, QSound.qsound_update);
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
case "Data East":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
sound_update = sound_updateDataeast_pcktgal;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2203.ym2203_start(0, 1500000);
|
|||
|
YM3812.ym3812_start(3000000);
|
|||
|
MSM5205.msm5205_start(0, 384000, Dataeast.pcktgal_adpcm_int, 5);
|
|||
|
ym3812stream = new sound_stream(41666, 0, 1, FMOpl.ym3812_update_one);
|
|||
|
mixerstream = new sound_stream(48000, 6, 0, null);
|
|||
|
break;
|
|||
|
case "Tehkan":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
sound_update = sound_updateTehkan_pbaction;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
AY8910.ay8910_interface generic_ay8910 = new AY8910.ay8910_interface();
|
|||
|
generic_ay8910.flags = 1;
|
|||
|
generic_ay8910.res_load = new int[3] { 1000, 1000, 1000 };
|
|||
|
generic_ay8910.portAread = null;
|
|||
|
generic_ay8910.portBread = null;
|
|||
|
generic_ay8910.portAwrite = null;
|
|||
|
generic_ay8910.portBwrite = null;
|
|||
|
AY8910.ay8910_start_ym(6, 0, 1500000, generic_ay8910);
|
|||
|
AY8910.ay8910_start_ym(6, 1, 1500000, generic_ay8910);
|
|||
|
AY8910.ay8910_start_ym(6, 2, 1500000, generic_ay8910);
|
|||
|
mixerstream = new sound_stream(48000, 9, 0, null);
|
|||
|
break;
|
|||
|
case "Neo Geo":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
sound_update = sound_updateN;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2610.ym2610_start(8000000);
|
|||
|
ym2610stream = new sound_stream(111111, 0, 2, YM2610.F2610.ym2610_update_one);
|
|||
|
mixerstream = new sound_stream(48000, 3, 0, null);
|
|||
|
break;
|
|||
|
case "SunA8":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
sound_update = sound_updateSunA8;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM3812.ym3812_start(4000000);
|
|||
|
AY8910.ay8910_interface starfigh_ay8910_interface = new AY8910.ay8910_interface();
|
|||
|
starfigh_ay8910_interface.flags = 1;
|
|||
|
starfigh_ay8910_interface.res_load = new int[3] { 1000, 1000, 1000 };
|
|||
|
starfigh_ay8910_interface.portAread = null;
|
|||
|
starfigh_ay8910_interface.portBread = null;
|
|||
|
starfigh_ay8910_interface.portAwrite = SunA8.suna8_play_samples_w;
|
|||
|
starfigh_ay8910_interface.portBwrite = SunA8.suna8_samples_number_w;
|
|||
|
Sample.samples_start();
|
|||
|
ym3812stream = new sound_stream(55555, 0, 1, FMOpl.ym3812_update_one);
|
|||
|
AY8910.ay8910_start_ym(6, 0, 1500000, starfigh_ay8910_interface);
|
|||
|
samplestream = new sound_stream(48000, 0, 1, Sample.sample_update_sound);
|
|||
|
mixerstream = new sound_stream(48000, 5, 0, null);
|
|||
|
break;
|
|||
|
case "Namco System 1":
|
|||
|
sound_update = sound_updateNa;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2151.ym2151_init(3579580);
|
|||
|
Namco.namco_start();
|
|||
|
DAC.dac_start();
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
namcostream = new sound_stream(192000, 0, 2, Namco.namco_update_stereo);
|
|||
|
dacstream = new sound_stream(192000, 0, 1, DAC.DAC_update);
|
|||
|
mixerstream = new sound_stream(48000, 5, 0, null);
|
|||
|
break;
|
|||
|
case "IGS011":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "drgnwrld":
|
|||
|
case "drgnwrldv30":
|
|||
|
case "drgnwrldv21":
|
|||
|
case "drgnwrldv21j":
|
|||
|
case "drgnwrldv20j":
|
|||
|
case "drgnwrldv10c":
|
|||
|
case "drgnwrldv11h":
|
|||
|
case "drgnwrldv40k":
|
|||
|
sound_update = sound_updateIGS011_drgnwrld;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
OKI6295.okim6295_start();
|
|||
|
YM3812.ym3812_start(3579545);
|
|||
|
okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update);
|
|||
|
ym3812stream = new sound_stream(49715, 0, 1, FMOpl.ym3812_update_one);
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
case "lhb":
|
|||
|
case "lhbv33c":
|
|||
|
case "dbc":
|
|||
|
case "ryukobou":
|
|||
|
case "xymg":
|
|||
|
case "wlcc":
|
|||
|
sound_update = sound_updateIGS011_lhb;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
OKI6295.okim6295_start();
|
|||
|
okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update);
|
|||
|
mixerstream = new sound_stream(48000, 1, 0, null);
|
|||
|
break;
|
|||
|
case "lhb2":
|
|||
|
case "nkishusp":
|
|||
|
sound_update = sound_updateIGS011_lhb2;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
OKI6295.okim6295_start();
|
|||
|
YM2413.ym2413_start(3579545);
|
|||
|
okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update);
|
|||
|
ym2413stream = new sound_stream(49715, 0, 2, YM2413.ym2413_update_one);
|
|||
|
mixerstream = new sound_stream(48000, 3, 0, null);
|
|||
|
break;
|
|||
|
case "vbowl":
|
|||
|
case "vbowlj":
|
|||
|
sound_update = sound_updateIGS011_vbowl;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
ICS2115.ics2115_start();
|
|||
|
ics2115stream = new sound_stream(33075, 0, 2, ICS2115.ics2115_update);
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "PGM":
|
|||
|
latched_value = new ushort[3];
|
|||
|
utempdata = new ushort[3];
|
|||
|
sound_update = sound_updatePGM;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
ICS2115.ics2115_start();
|
|||
|
ics2115stream = new sound_stream(33075, 0, 2, ICS2115.ics2115_update);
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
case "M72":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
sound_update = sound_updateM72;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
DAC.dac_start();
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
dacstream = new sound_stream(192000, 0, 1, DAC.DAC_update);
|
|||
|
mixerstream = new sound_stream(48000, 3, 0, null);
|
|||
|
break;
|
|||
|
case "M92":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
sound_update = sound_updateM92;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
Iremga20.iremga20_start();
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
iremga20stream = new sound_stream(894886, 0, 2, Iremga20.iremga20_update);
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "Taito":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "tokio":
|
|||
|
case "tokioo":
|
|||
|
case "tokiou":
|
|||
|
case "tokiob":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
sound_update = sound_updateTaito_tokio;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2203.ym2203_start(0, 3000000);
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "bublbobl":
|
|||
|
case "bublbobl1":
|
|||
|
case "bublboblr":
|
|||
|
case "bublboblr1":
|
|||
|
case "boblbobl":
|
|||
|
case "sboblbobl":
|
|||
|
case "sboblbobla":
|
|||
|
case "sboblboblb":
|
|||
|
case "sboblbobld":
|
|||
|
case "sboblboblc":
|
|||
|
case "bub68705":
|
|||
|
case "dland":
|
|||
|
case "bbredux":
|
|||
|
case "bublboblb":
|
|||
|
case "bublcave":
|
|||
|
case "boblcave":
|
|||
|
case "bublcave11":
|
|||
|
case "bublcave10":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
sound_update = sound_updateTaito_bublbobl;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2203.ym2203_start(0, 3000000);
|
|||
|
YM3812.ym3526_start(3000000);
|
|||
|
ym3526stream = new sound_stream(41666, 0, 1, FMOpl.ym3526_update_one);
|
|||
|
mixerstream = new sound_stream(48000, 5, 0, null);
|
|||
|
break;
|
|||
|
case "opwolf":
|
|||
|
case "opwolfa":
|
|||
|
case "opwolfj":
|
|||
|
case "opwolfu":
|
|||
|
case "opwolfb":
|
|||
|
case "opwolfp":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
sound_update = sound_updateTaito_opwolf;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
YM2151.ym2151_init(4000000);
|
|||
|
ym2151stream = new sound_stream(62500, 0, 2, YM2151.ym2151_update_one);
|
|||
|
MSM5205.msm5205_start(0, 384000, Taito.opwolf_msm5205_vck, 5);
|
|||
|
MSM5205.msm5205_start(1, 384000, Taito.opwolf_msm5205_vck, 5);
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "Taito B":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
YM2610.ym2610_start(8000000);
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "pbobble":
|
|||
|
ym2610stream = new sound_stream(111111, 0, 2, YM2610.F2610.ym2610b_update_one);
|
|||
|
break;
|
|||
|
case "silentd":
|
|||
|
case "silentdj":
|
|||
|
case "silentdu":
|
|||
|
ym2610stream = new sound_stream(111111, 0, 2, YM2610.F2610.ym2610_update_one);
|
|||
|
break;
|
|||
|
}
|
|||
|
AY8910.AA8910[0].stream.gain = 0x100;
|
|||
|
ym2610stream.gain = 0x100;
|
|||
|
sound_update = sound_updateTaitoB;
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
mixerstream = new sound_stream(48000, 3, 0, null);
|
|||
|
break;
|
|||
|
case "Konami 68000":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "cuebrick":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
sound_update = sound_updateKonami68000_cuebrick;
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
case "mia":
|
|||
|
case "mia2":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K007232.k007232_start(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k007232stream = new sound_stream(27965, 0, 2, K007232.KDAC_A_update);
|
|||
|
sound_update = sound_updateKonami68000_mia;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "tmnt":
|
|||
|
case "tmntu":
|
|||
|
case "tmntua":
|
|||
|
case "tmntub":
|
|||
|
case "tmht":
|
|||
|
case "tmhta":
|
|||
|
case "tmhtb":
|
|||
|
case "tmntj":
|
|||
|
case "tmnta":
|
|||
|
case "tmht2p":
|
|||
|
case "tmht2pa":
|
|||
|
case "tmnt2pj":
|
|||
|
case "tmnt2po":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K007232.k007232_start(3579545);
|
|||
|
Upd7759.upd7759_start(640000);
|
|||
|
Sample.samples_start();
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k007232stream = new sound_stream(27965, 0, 2, K007232.KDAC_A_update);
|
|||
|
upd7759stream = new sound_stream(160000, 0, 1, Upd7759.upd7759_update);
|
|||
|
samplestream = new sound_stream(48000, 0, 1, Sample.sample_update_sound);
|
|||
|
sound_update = sound_updateKonami68000_tmnt;
|
|||
|
mixerstream = new sound_stream(48000, 6, 0, null);
|
|||
|
break;
|
|||
|
case "punkshot":
|
|||
|
case "punkshot2":
|
|||
|
case "punkshotj":
|
|||
|
case "lgtnfght":
|
|||
|
case "lgtnfghta":
|
|||
|
case "lgtnfghtu":
|
|||
|
case "trigon":
|
|||
|
case "ssriders":
|
|||
|
case "ssriderseaa":
|
|||
|
case "ssridersebd":
|
|||
|
case "ssridersebc":
|
|||
|
case "ssridersuda":
|
|||
|
case "ssridersuac":
|
|||
|
case "ssridersuab":
|
|||
|
case "ssridersubc":
|
|||
|
case "ssridersadd":
|
|||
|
case "ssridersabd":
|
|||
|
case "ssridersjad":
|
|||
|
case "ssridersjac":
|
|||
|
case "ssridersjbd":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K053260.k053260_start(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k053260stream = new sound_stream(111860, 0, 2, K053260.k053260_update);
|
|||
|
sound_update = sound_updateKonami68000_ssriders;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "blswhstl":
|
|||
|
case "blswhstla":
|
|||
|
case "detatwin":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K053260.k053260_start(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k053260stream = new sound_stream(111860, 0, 2, K053260.k053260_update);
|
|||
|
sound_update = sound_updateKonami68000_blswhstl;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "glfgreat":
|
|||
|
case "glfgreatj":
|
|||
|
K053260.k053260_start(3579545);
|
|||
|
k053260stream = new sound_stream(111860, 0, 2, K053260.k053260_update);
|
|||
|
sound_update = sound_updateKonami68000_glfgreat;
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
case "tmnt2":
|
|||
|
case "tmnt2a":
|
|||
|
case "tmht22pe":
|
|||
|
case "tmht24pe":
|
|||
|
case "tmnt22pu":
|
|||
|
case "qgakumon":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K053260.k053260_start(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k053260stream = new sound_stream(111860, 0, 2, K053260.k053260_update);
|
|||
|
sound_update = sound_updateKonami68000_tmnt2;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "thndrx2":
|
|||
|
case "thndrx2a":
|
|||
|
case "thndrx2j":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
K053260.k053260_start(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
k053260stream = new sound_stream(111860, 0, 2, K053260.k053260_update);
|
|||
|
sound_update = sound_updateKonami68000_thndrx2;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
case "prmrsocr":
|
|||
|
case "prmrsocrj":
|
|||
|
latched_value = new ushort[3];
|
|||
|
utempdata = new ushort[3];
|
|||
|
K054539.k054539_start(48000);
|
|||
|
k054539stream = new sound_stream(48000, 0, 2, K054539.k054539_update);
|
|||
|
sound_update = sound_updateKonami68000_prmrsocr;
|
|||
|
mixerstream = new sound_stream(48000, 2, 0, null);
|
|||
|
break;
|
|||
|
}
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
break;
|
|||
|
case "Capcom":
|
|||
|
latched_value = new ushort[1];
|
|||
|
utempdata = new ushort[1];
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "gng":
|
|||
|
case "gnga":
|
|||
|
case "gngbl":
|
|||
|
case "gngprot":
|
|||
|
case "gngblita":
|
|||
|
case "gngc":
|
|||
|
case "gngt":
|
|||
|
case "makaimur":
|
|||
|
case "makaimurc":
|
|||
|
case "makaimurg":
|
|||
|
case "diamond":
|
|||
|
latched_value = new ushort[2];
|
|||
|
utempdata = new ushort[2];
|
|||
|
YM2203.ym2203_start(0, 1500000);
|
|||
|
YM2203.ym2203_start(1, 1500000);
|
|||
|
sound_update = sound_updateCapcom_gng;
|
|||
|
mixerstream = new sound_stream(48000, 8, 0, null);
|
|||
|
break;
|
|||
|
case "sf":
|
|||
|
case "sfua":
|
|||
|
case "sfj":
|
|||
|
case "sfjan":
|
|||
|
case "sfan":
|
|||
|
case "sfp":
|
|||
|
YM2151.ym2151_init(3579545);
|
|||
|
ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one);
|
|||
|
MSM5205.msm5205_start(0, 384000, MSM5205.null_vclk, 7);
|
|||
|
MSM5205.msm5205_start(1, 384000, MSM5205.null_vclk, 7);
|
|||
|
sound_update = sound_updateCapcom_sf;
|
|||
|
mixerstream = new sound_stream(48000, 4, 0, null);
|
|||
|
break;
|
|||
|
}
|
|||
|
sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false);
|
|||
|
break;
|
|||
|
}
|
|||
|
EmuTimer.timer_adjust_periodic(sound_update_timer, update_frequency, update_frequency);
|
|||
|
}
|
|||
|
public static void sound_reset()
|
|||
|
{
|
|||
|
switch (Machine.sBoard)
|
|||
|
{
|
|||
|
case "CPS-1":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
OKI6295.okim6295_reset();
|
|||
|
break;
|
|||
|
case "CPS-1(QSound)":
|
|||
|
case "CPS2":
|
|||
|
break;
|
|||
|
case "Data East":
|
|||
|
YM2203.FF2203[0].ym2203_reset_chip();
|
|||
|
FMOpl.ym3812_reset_chip();
|
|||
|
break;
|
|||
|
case "Tehkan":
|
|||
|
AY8910.AA8910[0].ay8910_reset_ym();
|
|||
|
AY8910.AA8910[1].ay8910_reset_ym();
|
|||
|
AY8910.AA8910[2].ay8910_reset_ym();
|
|||
|
break;
|
|||
|
case "Neo Geo":
|
|||
|
YM2610.F2610.ym2610_reset_chip();
|
|||
|
break;
|
|||
|
case "SunA8":
|
|||
|
FMOpl.ym3812_reset_chip();
|
|||
|
AY8910.AA8910[0].ay8910_reset_ym();
|
|||
|
break;
|
|||
|
case "Namco System 1":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
case "IGS011":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "drgnwrld":
|
|||
|
case "drgnwrldv30":
|
|||
|
case "drgnwrldv21":
|
|||
|
case "drgnwrldv21j":
|
|||
|
case "drgnwrldv20j":
|
|||
|
case "drgnwrldv10c":
|
|||
|
case "drgnwrldv11h":
|
|||
|
case "drgnwrldv40k":
|
|||
|
OKI6295.okim6295_reset();
|
|||
|
FMOpl.ym3812_reset_chip();
|
|||
|
break;
|
|||
|
case "lhb":
|
|||
|
case "lhbv33c":
|
|||
|
case "dbc":
|
|||
|
case "ryukobou":
|
|||
|
case "xymg":
|
|||
|
case "wlcc":
|
|||
|
OKI6295.okim6295_reset();
|
|||
|
break;
|
|||
|
case "lhb2":
|
|||
|
case "nkishusp":
|
|||
|
OKI6295.okim6295_reset();
|
|||
|
YM2413.ym2413_reset_chip();
|
|||
|
break;
|
|||
|
case "vbowl":
|
|||
|
case "vbowlj":
|
|||
|
ICS2115.ics2115_reset();
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "PGM":
|
|||
|
ICS2115.ics2115_reset();
|
|||
|
break;
|
|||
|
case "M72":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
case "M92":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
case "Taito":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "tokio":
|
|||
|
case "tokioo":
|
|||
|
case "tokiou":
|
|||
|
case "tokiob":
|
|||
|
YM2203.FF2203[0].ym2203_reset_chip();
|
|||
|
break;
|
|||
|
case "bublbobl":
|
|||
|
case "bublbobl1":
|
|||
|
case "bublboblr":
|
|||
|
case "bublboblr1":
|
|||
|
case "boblbobl":
|
|||
|
case "sboblbobl":
|
|||
|
case "sboblbobla":
|
|||
|
case "sboblboblb":
|
|||
|
case "sboblbobld":
|
|||
|
case "sboblboblc":
|
|||
|
case "bub68705":
|
|||
|
case "dland":
|
|||
|
case "bbredux":
|
|||
|
case "bublboblb":
|
|||
|
case "bublcave":
|
|||
|
case "boblcave":
|
|||
|
case "bublcave11":
|
|||
|
case "bublcave10":
|
|||
|
YM2203.FF2203[0].ym2203_reset_chip();
|
|||
|
FMOpl.ym3526_reset_chip();
|
|||
|
break;
|
|||
|
case "opwolf":
|
|||
|
case "opwolfa":
|
|||
|
case "opwolfj":
|
|||
|
case "opwolfu":
|
|||
|
case "opwolfb":
|
|||
|
case "opwolfp":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "Taito B":
|
|||
|
YM2610.F2610.ym2610_reset_chip();
|
|||
|
break;
|
|||
|
case "Konami 68000":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "cuebrick":
|
|||
|
case "mia":
|
|||
|
case "mia2":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
case "tmnt":
|
|||
|
case "tmntu":
|
|||
|
case "tmntua":
|
|||
|
case "tmntub":
|
|||
|
case "tmht":
|
|||
|
case "tmhta":
|
|||
|
case "tmhtb":
|
|||
|
case "tmntj":
|
|||
|
case "tmnta":
|
|||
|
case "tmht2p":
|
|||
|
case "tmht2pa":
|
|||
|
case "tmnt2pj":
|
|||
|
case "tmnt2po":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
Upd7759.upd7759_reset();
|
|||
|
break;
|
|||
|
case "punkshot":
|
|||
|
case "punkshot2":
|
|||
|
case "punkshotj":
|
|||
|
case "lgtnfght":
|
|||
|
case "lgtnfghta":
|
|||
|
case "lgtnfghtu":
|
|||
|
case "trigon":
|
|||
|
case "blswhstl":
|
|||
|
case "blswhstla":
|
|||
|
case "detatwin":
|
|||
|
case "tmnt2":
|
|||
|
case "tmnt2a":
|
|||
|
case "tmht22pe":
|
|||
|
case "tmht24pe":
|
|||
|
case "tmnt22pu":
|
|||
|
case "qgakumon":
|
|||
|
case "ssriders":
|
|||
|
case "ssriderseaa":
|
|||
|
case "ssridersebd":
|
|||
|
case "ssridersebc":
|
|||
|
case "ssridersuda":
|
|||
|
case "ssridersuac":
|
|||
|
case "ssridersuab":
|
|||
|
case "ssridersubc":
|
|||
|
case "ssridersadd":
|
|||
|
case "ssridersabd":
|
|||
|
case "ssridersjad":
|
|||
|
case "ssridersjac":
|
|||
|
case "ssridersjbd":
|
|||
|
case "thndrx2":
|
|||
|
case "thndrx2a":
|
|||
|
case "thndrx2j":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
K053260.k053260_reset();
|
|||
|
break;
|
|||
|
case "glfgreat":
|
|||
|
case "glfgreatj":
|
|||
|
K053260.k053260_reset();
|
|||
|
break;
|
|||
|
case "prmrsocr":
|
|||
|
case "prmrsocrj":
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "Capcom":
|
|||
|
switch (Machine.sName)
|
|||
|
{
|
|||
|
case "gng":
|
|||
|
case "gnga":
|
|||
|
case "gngbl":
|
|||
|
case "gngprot":
|
|||
|
case "gngblita":
|
|||
|
case "gngc":
|
|||
|
case "gngt":
|
|||
|
case "makaimur":
|
|||
|
case "makaimurc":
|
|||
|
case "makaimurg":
|
|||
|
case "diamond":
|
|||
|
YM2203.FF2203[0].ym2203_reset_chip();
|
|||
|
YM2203.FF2203[1].ym2203_reset_chip();
|
|||
|
break;
|
|||
|
case "sf":
|
|||
|
case "sfua":
|
|||
|
case "sfj":
|
|||
|
case "sfjan":
|
|||
|
case "sfan":
|
|||
|
case "sfp":
|
|||
|
YM2151.ym2151_reset_chip();
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
public static void sound_pause(bool pause)
|
|||
|
{
|
|||
|
if (pause)
|
|||
|
{
|
|||
|
sound_muted |= 0x02;
|
|||
|
//buf2.Volume = -10000;
|
|||
|
Sound.SetVolume(-10000);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
sound_muted &= ~0x02;
|
|||
|
//Sound.buf2.Volume = 0;
|
|||
|
Sound.SetVolume(0);
|
|||
|
}
|
|||
|
//osd_set_mastervolume(sound_muted ? -32 : 0);
|
|||
|
}
|
|||
|
public static void sound_updateC()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
okistream.stream_update();
|
|||
|
generate_resampled_dataY5(0x59);
|
|||
|
generate_resampled_dataO(0x4c, 2);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateC();
|
|||
|
}
|
|||
|
public static void sound_updateQ()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
qsoundstream.stream_update();
|
|||
|
generate_resampled_dataQ();
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateQ();
|
|||
|
}
|
|||
|
public static void sound_updateDataeast_pcktgal()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
YM2203.FF2203[0].stream.stream_update();
|
|||
|
ym3812stream.stream_update();
|
|||
|
MSM5205.mm1[0].voice.stream.stream_update();
|
|||
|
generate_resampled_dataA3(0, 0x99, 0);
|
|||
|
generate_resampled_dataYM2203(0, 0x99, 3);
|
|||
|
generate_resampled_dataYM3812(0x100, 4);
|
|||
|
generate_resampled_dataMSM5205_0(0xb3, 5);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex] + mixerstream.streaminput_Ptrs[5][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateDataeast_pcktgal();
|
|||
|
}
|
|||
|
public static void sound_updateTehkan_pbaction()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
AY8910.AA8910[1].stream.stream_update();
|
|||
|
AY8910.AA8910[2].stream.stream_update();
|
|||
|
generate_resampled_dataA3(0, 0x40, 0);
|
|||
|
generate_resampled_dataA3(1, 0x40, 3);
|
|||
|
generate_resampled_dataA3(2, 0x40, 6);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex] + mixerstream.streaminput_Ptrs[5][sampindex] + mixerstream.streaminput_Ptrs[6][sampindex] + mixerstream.streaminput_Ptrs[7][sampindex] + mixerstream.streaminput_Ptrs[8][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateTehkan();
|
|||
|
}
|
|||
|
public static void sound_updateN()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
ym2610stream.stream_update();
|
|||
|
generate_resampled_dataA_neogeo();
|
|||
|
generate_resampled_dataY6();
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateN();
|
|||
|
}
|
|||
|
public static void sound_updateSunA8()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym3812stream.stream_update();
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
samplestream.stream_update();
|
|||
|
generate_resampled_dataYM3812(0x100, 0);
|
|||
|
generate_resampled_dataA3(0, 0x80, 1);
|
|||
|
generate_resampled_dataSample(0x80, 4);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateSunA8();
|
|||
|
}
|
|||
|
public static void sound_updateNa()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
namcostream.stream_update();
|
|||
|
dacstream.stream_update();
|
|||
|
generate_resampled_dataY5(0x80);
|
|||
|
generate_resampled_dataNa();
|
|||
|
generate_resampled_dataDac(0x100, 4);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateNa();
|
|||
|
}
|
|||
|
public static void sound_updateIGS011_drgnwrld()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
okistream.stream_update();
|
|||
|
ym3812stream.stream_update();
|
|||
|
generate_resampled_dataO(0x100, 0);
|
|||
|
generate_resampled_dataYM3812(0x200, 1);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateIGS011_drgnwrld();
|
|||
|
}
|
|||
|
public static void sound_updateIGS011_lhb()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
okistream.stream_update();
|
|||
|
generate_resampled_dataO(0x100, 0);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateIGS011_lhb();
|
|||
|
}
|
|||
|
public static void sound_updateIGS011_lhb2()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
okistream.stream_update();
|
|||
|
ym2413stream.stream_update();
|
|||
|
generate_resampled_dataO(0x100, 0);
|
|||
|
generate_resampled_dataYM2413(0x200, 1);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateIGS011_lhb2();
|
|||
|
}
|
|||
|
public static void sound_updateIGS011_vbowl()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ics2115stream.stream_update();
|
|||
|
generate_resampled_dataIcs2115(0x500);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateIGS011_vbowl();
|
|||
|
}
|
|||
|
public static void sound_updatePGM()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ics2115stream.stream_update();
|
|||
|
generate_resampled_dataIcs2115(0x500);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updatePGM();
|
|||
|
}
|
|||
|
public static void sound_updateM72()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
dacstream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataDac(0x66, 2);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateM72();
|
|||
|
}
|
|||
|
public static void sound_updateM92()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
iremga20stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x66);
|
|||
|
generate_resampled_dataIremga20(0x100);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateM92();
|
|||
|
}
|
|||
|
public static void sound_updateTaito_tokio()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
YM2203.FF2203[0].stream.stream_update();
|
|||
|
generate_resampled_dataA3(0, 0x14, 0);
|
|||
|
generate_resampled_dataYM2203(0, 0x100, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateTaito_tokio();
|
|||
|
}
|
|||
|
public static void sound_updateTaito_bublbobl()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
YM2203.FF2203[0].stream.stream_update();
|
|||
|
ym3526stream.stream_update();
|
|||
|
generate_resampled_dataA3(0, 0x40, 0);
|
|||
|
generate_resampled_dataYM2203(0, 0x40, 3);
|
|||
|
generate_resampled_dataYM3526(0x80, 4);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateTaito_bublbobl();
|
|||
|
}
|
|||
|
public static void sound_updateTaito_opwolf()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
MSM5205.mm1[0].voice.stream.stream_update();
|
|||
|
MSM5205.mm1[1].voice.stream.stream_update();
|
|||
|
generate_resampled_dataY5(0xc0);
|
|||
|
generate_resampled_dataMSM5205_0(0x99, 2);
|
|||
|
generate_resampled_dataMSM5205_1(0x99, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateCapcom_sf();
|
|||
|
}
|
|||
|
public static void sound_updateTaitoB()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
ym2610stream.stream_update();
|
|||
|
generate_resampled_dataA_taitob();
|
|||
|
generate_resampled_dataY6();
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateN();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_cuebrick()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_cuebrick();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_mia()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k007232stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataK007232(0x33);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_mia();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_tmnt()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k007232stream.stream_update();
|
|||
|
upd7759stream.stream_update();
|
|||
|
samplestream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataK007232(0x33);
|
|||
|
generate_resampled_dataUpd7759(0x99);
|
|||
|
generate_resampled_dataSample(0x100, 5);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex] + mixerstream.streaminput_Ptrs[5][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex] + mixerstream.streaminput_Ptrs[5][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_tmnt();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_blswhstl()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k053260stream.stream_update();
|
|||
|
generate_resampled_dataY5(0xb3);
|
|||
|
generate_resampled_dataK053260(0x80, 2, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_ssriders();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_glfgreat()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
k053260stream.stream_update();
|
|||
|
generate_resampled_dataK053260(0x100, 0, 1);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_glfgreat();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_tmnt2()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k053260stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataK053260(0xc0, 2, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_ssriders();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_ssriders()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k053260stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataK053260(0xb3, 2, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_ssriders();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_thndrx2()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
k053260stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x100);
|
|||
|
generate_resampled_dataK053260(0xc0, 2, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_ssriders();
|
|||
|
}
|
|||
|
public static void sound_updateKonami68000_prmrsocr()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
k054539stream.stream_update();
|
|||
|
generate_resampled_dataK054539(0x100);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateKonami68000_prmrsocr();
|
|||
|
}
|
|||
|
public static void sound_updateCapcom_gng()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
AY8910.AA8910[0].stream.stream_update();
|
|||
|
AY8910.AA8910[1].stream.stream_update();
|
|||
|
YM2203.FF2203[0].stream.stream_update();
|
|||
|
YM2203.FF2203[1].stream.stream_update();
|
|||
|
generate_resampled_dataA3(0, 0x66, 0);
|
|||
|
generate_resampled_dataYM2203(0, 0x33, 3);
|
|||
|
generate_resampled_dataA3(1, 0x66, 4);
|
|||
|
generate_resampled_dataYM2203(1, 0x33, 7);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int samp;
|
|||
|
samp = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex] + mixerstream.streaminput_Ptrs[4][sampindex] + mixerstream.streaminput_Ptrs[5][sampindex] + mixerstream.streaminput_Ptrs[6][sampindex] + mixerstream.streaminput_Ptrs[7][sampindex];
|
|||
|
if (samp < -32768)
|
|||
|
{
|
|||
|
samp = -32768;
|
|||
|
}
|
|||
|
else if (samp > 32767)
|
|||
|
{
|
|||
|
samp = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((samp & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)samp;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((samp & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateCapcom_gng();
|
|||
|
}
|
|||
|
public static void sound_updateCapcom_sf()
|
|||
|
{
|
|||
|
int sampindex;
|
|||
|
ym2151stream.stream_update();
|
|||
|
MSM5205.mm1[0].voice.stream.stream_update();
|
|||
|
MSM5205.mm1[1].voice.stream.stream_update();
|
|||
|
generate_resampled_dataY5(0x99);
|
|||
|
generate_resampled_dataMSM5205_0(0x100, 2);
|
|||
|
generate_resampled_dataMSM5205_1(0x100, 3);
|
|||
|
mixerstream.output_sampindex += 0x3c0;
|
|||
|
for (sampindex = 0; sampindex < 0x3c0; sampindex++)
|
|||
|
{
|
|||
|
int sampL, sampR;
|
|||
|
sampL = mixerstream.streaminput_Ptrs[0][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampL < -32768)
|
|||
|
{
|
|||
|
sampL = -32768;
|
|||
|
}
|
|||
|
else if (sampL > 32767)
|
|||
|
{
|
|||
|
sampL = 32767;
|
|||
|
}
|
|||
|
sampR = mixerstream.streaminput_Ptrs[1][sampindex] + mixerstream.streaminput_Ptrs[2][sampindex] + mixerstream.streaminput_Ptrs[3][sampindex];
|
|||
|
if (sampR < -32768)
|
|||
|
{
|
|||
|
sampR = -32768;
|
|||
|
}
|
|||
|
else if (sampR > 32767)
|
|||
|
{
|
|||
|
sampR = 32767;
|
|||
|
}
|
|||
|
finalmixb[sampindex * 4] = (byte)sampL;
|
|||
|
finalmixb[sampindex * 4 + 1] = (byte)((sampL & 0xff00) >> 8);
|
|||
|
finalmixb[sampindex * 4 + 2] = (byte)sampR;
|
|||
|
finalmixb[sampindex * 4 + 3] = (byte)((sampR & 0xff00) >> 8);
|
|||
|
}
|
|||
|
osd_update_audio_stream(finalmixb, 0x3c0);
|
|||
|
streams_updateCapcom_sf();
|
|||
|
}
|
|||
|
public static void latch_callback()
|
|||
|
{
|
|||
|
latched_value[0] = utempdata[0];
|
|||
|
}
|
|||
|
public static void latch_callback2()
|
|||
|
{
|
|||
|
latched_value[1] = utempdata[1];
|
|||
|
}
|
|||
|
public static void latch_callback3()
|
|||
|
{
|
|||
|
latched_value[2] = utempdata[2];
|
|||
|
}
|
|||
|
public static void latch_callback4()
|
|||
|
{
|
|||
|
latched_value[3] = utempdata[3];
|
|||
|
}
|
|||
|
public static ushort latch_r(int which)
|
|||
|
{
|
|||
|
return latched_value[which];
|
|||
|
}
|
|||
|
public static void soundlatch_w(ushort data)
|
|||
|
{
|
|||
|
utempdata[0] = data;
|
|||
|
EmuTimer.timer_set_internal(EmuTimer.TIME_ACT.Sound_latch_callback);
|
|||
|
}
|
|||
|
public static void soundlatch2_w(ushort data)
|
|||
|
{
|
|||
|
utempdata[1] = data;
|
|||
|
EmuTimer.timer_set_internal(EmuTimer.TIME_ACT.Sound_latch_callback2);
|
|||
|
}
|
|||
|
public static void soundlatch3_w(ushort data)
|
|||
|
{
|
|||
|
utempdata[2] = data;
|
|||
|
EmuTimer.timer_set_internal(EmuTimer.TIME_ACT.Sound_latch_callback3);
|
|||
|
}
|
|||
|
public static void soundlatch4_w(ushort data)
|
|||
|
{
|
|||
|
utempdata[3] = data;
|
|||
|
EmuTimer.timer_set_internal(EmuTimer.TIME_ACT.Sound_latch_callback4);
|
|||
|
}
|
|||
|
public static ushort soundlatch_r()
|
|||
|
{
|
|||
|
return latched_value[0];
|
|||
|
}
|
|||
|
public static ushort soundlatch2_r()
|
|||
|
{
|
|||
|
return latched_value[1];
|
|||
|
}
|
|||
|
public static ushort soundlatch3_r()
|
|||
|
{
|
|||
|
return latched_value[2];
|
|||
|
}
|
|||
|
public static ushort soundlatch4_r()
|
|||
|
{
|
|||
|
return latched_value[3];
|
|||
|
}
|
|||
|
private static void osd_update_audio_stream(byte[] buffer, int samples_this_frame)
|
|||
|
{
|
|||
|
////只需要这部分逻辑
|
|||
|
SubmitSamples(buffer, samples_this_frame);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|