public static void SaveStateBinaryQ(BinaryWriter writer) { int i; writer.Write(dswa); writer.Write(dswb); writer.Write(dswc); writer.Write(basebanksnd); for (i = 0; i < 0x20; i++) { writer.Write(cps_a_regs[i]); } for (i = 0; i < 0x20; i++) { writer.Write(cps_b_regs[i]); } for (i = 0; i < 0xc00; i++) { writer.Write(Palette.entry_color[i]); } writer.Write(Memory.mainram, 0, 0x10000); writer.Write(gfxram, 0, 0x30000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.z1.SaveStateBinary(writer); Cpuint.SaveStateBinary(writer); writer.Write(Timer.global_basetime.seconds); writer.Write(Timer.global_basetime.attoseconds); writer.Write(Video.screenstate.frame_number); writer.Write(Sound.last_update_second); for (i = 0; i < 2; i++) { writer.Write(Cpuexec.cpu[i].suspend); writer.Write(Cpuexec.cpu[i].nextsuspend); writer.Write(Cpuexec.cpu[i].eatcycles); writer.Write(Cpuexec.cpu[i].nexteatcycles); writer.Write(Cpuexec.cpu[i].localtime.seconds); writer.Write(Cpuexec.cpu[i].localtime.attoseconds); } Timer.SaveStateBinary(writer); writer.Write(qsound_sharedram1); writer.Write(qsound_sharedram2); QSound.SaveStateBinary(writer); writer.Write(Sound.qsoundstream.output_sampindex); writer.Write(Sound.qsoundstream.output_base_sampindex); writer.Write(Sound.mixerstream.output_sampindex); writer.Write(Sound.mixerstream.output_base_sampindex); writer.Write(Eeprom.eeprom_data); writer.Write(Eeprom.serial_buffer); writer.Write((int)Eeprom.clock_line); writer.Write((int)Eeprom.reset_line); writer.Write(Eeprom.locked); writer.Write(Eeprom.serial_count); writer.Write(Eeprom.latch); writer.Write(Eeprom.sending); writer.Write(Eeprom.eeprom_data_bits); }
public static void LoadStateBinaryQ(BinaryReader reader) { int i; dswa = reader.ReadByte(); dswb = reader.ReadByte(); dswc = reader.ReadByte(); basebanksnd = reader.ReadInt32(); for (i = 0; i < 0x20; i++) { cps_a_regs[i] = reader.ReadUInt16(); } for (i = 0; i < 0x20; i++) { cps_b_regs[i] = reader.ReadUInt16(); } for (i = 0; i < 0xc00; i++) { Palette.entry_color[i] = reader.ReadUInt32(); } Memory.mainram = reader.ReadBytes(0x10000); gfxram = reader.ReadBytes(0x30000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.z1.LoadStateBinary(reader); Cpuint.LoadStateBinary(reader); Timer.global_basetime.seconds = reader.ReadInt32(); Timer.global_basetime.attoseconds = reader.ReadInt64(); Video.screenstate.frame_number = reader.ReadInt64(); Sound.last_update_second = reader.ReadInt32(); for (i = 0; i < 2; i++) { Cpuexec.cpu[i].suspend = reader.ReadByte(); Cpuexec.cpu[i].nextsuspend = reader.ReadByte(); Cpuexec.cpu[i].eatcycles = reader.ReadByte(); Cpuexec.cpu[i].nexteatcycles = reader.ReadByte(); Cpuexec.cpu[i].localtime.seconds = reader.ReadInt32(); Cpuexec.cpu[i].localtime.attoseconds = reader.ReadInt64(); } Timer.LoadStateBinary(reader); qsound_sharedram1 = reader.ReadBytes(0x1000); qsound_sharedram2 = reader.ReadBytes(0x1000); QSound.LoadStateBinary(reader); Sound.qsoundstream.output_sampindex = reader.ReadInt32(); Sound.qsoundstream.output_base_sampindex = reader.ReadInt32(); Sound.mixerstream.output_sampindex = reader.ReadInt32(); Sound.mixerstream.output_base_sampindex = reader.ReadInt32(); Eeprom.eeprom_data = reader.ReadBytes(0x80); Eeprom.serial_buffer = reader.ReadBytes(40); Eeprom.clock_line = (LineState)reader.ReadInt32(); Eeprom.reset_line = (LineState)reader.ReadInt32(); Eeprom.locked = reader.ReadInt32(); Eeprom.serial_count = reader.ReadInt32(); Eeprom.latch = reader.ReadInt32(); Eeprom.sending = reader.ReadInt32(); Eeprom.eeprom_data_bits = reader.ReadInt32(); }
public static void sound_init() { iRecord = 0; 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 = Timer.timer_alloc_common(sound_update, "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 = Timer.timer_alloc_common(sound_update, "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 "Neo Geo": latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateN; sound_update_timer = Timer.timer_alloc_common(sound_update, "sound_update", false); YM2610.ym2610_start(); ay8910stream = new sound_stream(250000, 0, 1, AY8910.ay8910_update); ym2610stream = new sound_stream(111111, 0, 2, FM.ym2610_update_one); mixerstream = new sound_stream(48000, 3, 0, null); break; case "Namco System 1": sound_update = sound_updateNa; sound_update_timer = Timer.timer_alloc_common(sound_update, "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": sound_update = sound_updateIGS011; sound_update_timer = Timer.timer_alloc_common(sound_update, "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 "PGM": latched_value = new ushort[3]; utempdata = new ushort[3]; sound_update = sound_updatePGM; sound_update_timer = Timer.timer_alloc_common(sound_update, "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 = Timer.timer_alloc_common(sound_update, "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 = Timer.timer_alloc_common(sound_update, "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; } Timer.timer_adjust_periodic(sound_update_timer, update_frequency, update_frequency); }