NES add sound volume settings to config object

This commit is contained in:
goyuken 2013-12-22 21:47:16 +00:00
parent 0347fc5eef
commit f992672051
4 changed files with 54 additions and 60 deletions

View File

@ -600,17 +600,17 @@ namespace BizHawk.Client.Common
public int Analog_SmallChange = 1;
// NES Sound settings
public int NESSquare1 = 376;
public int NESSquare2 = 376;
public int NESTriangle = 426;
public int NESNoise = 247;
public int NESDMC = 167;
//public int NESSquare1 = 376;
//public int NESSquare2 = 376;
//public int NESTriangle = 426;
//public int NESNoise = 247;
//public int NESDMC = 167;
public const int NESSquare1Max = 376;
public const int NESSquare2Max = 376;
public const int NESTriangleMax = 426;
public const int NESNoiseMax = 247;
public const int NESDMCMax = 167;
//public const int NESSquare1Max = 376;
//public const int NESSquare2Max = 376;
//public const int NESTriangleMax = 426;
//public const int NESNoiseMax = 247;
//public const int NESDMCMax = 167;
public struct AnalogBind
{

View File

@ -814,19 +814,6 @@ namespace BizHawk.Client.EmuHawk
LogWindowAsConsoleMenuItem.Enabled = true;
}
public void SetNesSoundChannels()
{
var nes = Global.Emulator as NES;
if (nes != null)
{
nes.SetSquare1(Global.Config.NESSquare1);
nes.SetSquare2(Global.Config.NESSquare2);
nes.SetTriangle(Global.Config.NESTriangle);
nes.SetNoise(Global.Config.NESNoise);
nes.SetDMC(Global.Config.NESDMC);
}
}
public void ClickSpeedItem(int num)
{
if ((ModifierKeys & Keys.Control) != 0)
@ -3571,7 +3558,6 @@ namespace BizHawk.Client.EmuHawk
}
Global.Game.Status = nes.RomStatus;
SetNesSoundChannels();
}
Text = DisplayNameForSystem(game.System) + " - " + game.Name;

View File

@ -2,25 +2,27 @@
using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Emulation.Cores.Nintendo.NES;
namespace BizHawk.Client.EmuHawk
{
public partial class NESSoundConfig : Form, IToolForm
{
private int sq1, sq2, tr, no, dmc = 0;
private NES.NESSettings oldsettings;
private NES.NESSettings settings;
public bool AskSave() { return true; }
public bool UpdateBefore { get { return false; } }
public void UpdateValues()
{
if (!(Global.Emulator is NESDebugger))
if (!(Global.Emulator is NES))
{
Close();
}
}
public void Restart()
{
if (!(Global.Emulator is NESDebugger))
if (!(Global.Emulator is NES))
{
Close();
}
@ -29,26 +31,25 @@ namespace BizHawk.Client.EmuHawk
public NESSoundConfig()
{
InitializeComponent();
trackBar1.Maximum = Config.NESSquare1Max;
trackBar2.Maximum = Config.NESSquare2Max;
trackBar3.Maximum = Config.NESTriangleMax;
trackBar4.Maximum = Config.NESNoiseMax;
trackBar5.Maximum = Config.NESDMCMax;
// get baseline maxes from a default config object
var d = new NES.NESSettings();
trackBar1.Maximum = d.Square1;
trackBar2.Maximum = d.Square2;
trackBar3.Maximum = d.Triangle;
trackBar4.Maximum = d.Noise;
trackBar5.Maximum = d.DMC;
}
private void NESSoundConfig_Load(object sender, EventArgs e)
{
trackBar1.Value = Global.Config.NESSquare1;
trackBar2.Value = Global.Config.NESSquare2;
trackBar3.Value = Global.Config.NESTriangle;
trackBar4.Value = Global.Config.NESNoise;
trackBar5.Value = Global.Config.NESDMC;
//save value for cancel
sq1 = Global.Config.NESSquare1;
sq2 = Global.Config.NESSquare2;
tr = Global.Config.NESTriangle;
no = Global.Config.NESNoise;
dmc = Global.Config.NESDMC;
oldsettings = (NES.NESSettings)Global.Emulator.GetSettings();
settings = oldsettings.Clone();
trackBar1.Value = settings.Square1;
trackBar2.Value = settings.Square2;
trackBar3.Value = settings.Triangle;
trackBar4.Value = settings.Noise;
trackBar5.Value = settings.DMC;
}
private void OK_Click(object sender, EventArgs e)
@ -59,49 +60,43 @@ namespace BizHawk.Client.EmuHawk
private void Cancel_Click(object sender, EventArgs e)
{
//restore previous value
//restore value
Global.Config.NESSquare1 = sq1;
Global.Config.NESSquare2 = sq2;
Global.Config.NESTriangle = tr;
Global.Config.NESNoise = no;
Global.Config.NESDMC = dmc;
GlobalWin.MainForm.SetNesSoundChannels();
Global.Emulator.PutSettings(oldsettings);
Close();
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
label6.Text = trackBar1.Value.ToString();
Global.Config.NESSquare1 = trackBar1.Value;
GlobalWin.MainForm.SetNesSoundChannels();
settings.Square1 = trackBar1.Value;
Global.Emulator.PutSettings(settings);
}
private void trackBar2_ValueChanged(object sender, EventArgs e)
{
label7.Text = trackBar2.Value.ToString();
Global.Config.NESSquare2 = trackBar2.Value;
GlobalWin.MainForm.SetNesSoundChannels();
settings.Square2 = trackBar2.Value;
Global.Emulator.PutSettings(settings);
}
private void trackBar3_ValueChanged(object sender, EventArgs e)
{
label8.Text = trackBar3.Value.ToString();
Global.Config.NESTriangle = trackBar3.Value;
GlobalWin.MainForm.SetNesSoundChannels();
settings.Triangle = trackBar3.Value;
Global.Emulator.PutSettings(settings);
}
private void trackBar4_ValueChanged(object sender, EventArgs e)
{
label9.Text = trackBar4.Value.ToString();
Global.Config.NESNoise = trackBar4.Value;
GlobalWin.MainForm.SetNesSoundChannels();
settings.Noise = trackBar4.Value;
Global.Emulator.PutSettings(settings);
}
private void trackBar5_ValueChanged(object sender, EventArgs e)
{
label10.Text = trackBar5.Value.ToString();
Global.Config.NESDMC = trackBar5.Value;
GlobalWin.MainForm.SetNesSoundChannels();
settings.DMC = trackBar5.Value;
Global.Emulator.PutSettings(settings);
}
}
}

View File

@ -893,6 +893,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
CoreComm.ScreenLogicalOffsetY = DisplayType == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine;
SetPalette(Settings.Palette);
apu.Square1V = Settings.Square1;
apu.Square2V = Settings.Square2;
apu.TriangleV = Settings.Triangle;
apu.NoiseV = Settings.Noise;
apu.DMCV = Settings.DMC;
return false;
}
@ -911,6 +918,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
public int[,] Palette;
public int Square1 = 376;
public int Square2 = 376;
public int Triangle = 426;
public int Noise = 247;
public int DMC = 167;
public NESSettings Clone()
{
return (NESSettings)MemberwiseClone();