add CoreInputComm/CoreOutputComm, remove Query system, hook up nes video config options
This commit is contained in:
parent
11b33fcc33
commit
c0988feaa3
|
@ -190,6 +190,7 @@
|
||||||
<Compile Include="Interfaces\Base Implementations\NullController.cs" />
|
<Compile Include="Interfaces\Base Implementations\NullController.cs" />
|
||||||
<Compile Include="Interfaces\Base Implementations\NullEmulator.cs" />
|
<Compile Include="Interfaces\Base Implementations\NullEmulator.cs" />
|
||||||
<Compile Include="Interfaces\Base Implementations\SmdGame.cs" />
|
<Compile Include="Interfaces\Base Implementations\SmdGame.cs" />
|
||||||
|
<Compile Include="Interfaces\CoreComms.cs" />
|
||||||
<Compile Include="Sound\Utilities\BufferedAsync.cs" />
|
<Compile Include="Sound\Utilities\BufferedAsync.cs" />
|
||||||
<Compile Include="Sound\Utilities\Metaspu.cs" />
|
<Compile Include="Sound\Utilities\Metaspu.cs" />
|
||||||
<Compile Include="Interfaces\IController.cs" />
|
<Compile Include="Interfaces\IController.cs" />
|
||||||
|
|
|
@ -313,6 +313,7 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
|
|
||||||
public TI83()
|
public TI83()
|
||||||
{
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
cpu.ReadMemory = ReadMemory;
|
cpu.ReadMemory = ReadMemory;
|
||||||
cpu.WriteMemory = WriteMemory;
|
cpu.WriteMemory = WriteMemory;
|
||||||
cpu.ReadHardware = ReadHardware;
|
cpu.ReadHardware = ReadHardware;
|
||||||
|
@ -333,6 +334,10 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
cpu.NonMaskableInterrupt = false;
|
cpu.NonMaskableInterrupt = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
protected byte[] vram = new byte[0x300];
|
protected byte[] vram = new byte[0x300];
|
||||||
class MyVideoProvider : IVideoProvider
|
class MyVideoProvider : IVideoProvider
|
||||||
{
|
{
|
||||||
|
@ -569,12 +574,6 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() { }
|
public void Dispose() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -262,6 +262,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
|
|
||||||
public Gameboy()
|
public Gameboy()
|
||||||
{
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadGame(IGame game)
|
public void LoadGame(IGame game)
|
||||||
|
@ -637,6 +638,10 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
//Cpu.ExecuteCycles(4096);
|
//Cpu.ExecuteCycles(4096);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
get { return new NullEmulator(); }
|
get { return new NullEmulator(); }
|
||||||
|
@ -850,12 +855,6 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() {}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,6 +38,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
|
|
||||||
public NES()
|
public NES()
|
||||||
{
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
BootGodDB.Initialize();
|
BootGodDB.Initialize();
|
||||||
SetPalette(Palettes.FCEUX_Standard);
|
SetPalette(Palettes.FCEUX_Standard);
|
||||||
videoProvider = new MyVideoProvider(this);
|
videoProvider = new MyVideoProvider(this);
|
||||||
|
@ -126,6 +127,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
NESWatch[] watches;
|
NESWatch[] watches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
class MyVideoProvider : IVideoProvider
|
class MyVideoProvider : IVideoProvider
|
||||||
{
|
{
|
||||||
NES emu;
|
NES emu;
|
||||||
|
@ -137,10 +141,17 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
int[] pixels = new int[256 * 240];
|
int[] pixels = new int[256 * 240];
|
||||||
public int[] GetVideoBuffer()
|
public int[] GetVideoBuffer()
|
||||||
{
|
{
|
||||||
|
int backdrop = emu.CoreInputComm.NES_BackdropColor;
|
||||||
|
bool useBackdrop = (backdrop & 0xFF000000) != 0;
|
||||||
//TODO - we could recalculate this on the fly (and invalidate/recalculate it when the palette is changed)
|
//TODO - we could recalculate this on the fly (and invalidate/recalculate it when the palette is changed)
|
||||||
for (int i = 0; i < 256*240; i++)
|
for (int i = 0; i < 256*240; i++)
|
||||||
{
|
{
|
||||||
pixels[i] = emu.palette_compiled[emu.ppu.xbuf[i]];
|
short pixel = emu.ppu.xbuf[i];
|
||||||
|
if((pixel&0x8000)!=0 && useBackdrop)
|
||||||
|
{
|
||||||
|
pixels[i] = backdrop;
|
||||||
|
}
|
||||||
|
else pixels[i] = emu.palette_compiled[pixel&0x7FFF];
|
||||||
}
|
}
|
||||||
return pixels;
|
return pixels;
|
||||||
}
|
}
|
||||||
|
@ -326,12 +337,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GameName { get { return game_name; } }
|
public string GameName { get { return game_name; } }
|
||||||
|
|
||||||
public enum EDetectionOrigin
|
public enum EDetectionOrigin
|
||||||
|
|
|
@ -157,8 +157,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
int rasterpos = xstart;
|
int rasterpos = xstart;
|
||||||
|
|
||||||
//check all the conditions that can cause things to render in these 8px
|
//check all the conditions that can cause things to render in these 8px
|
||||||
bool renderspritenow = reg_2001.show_obj && (xt > 0 || reg_2001.show_obj_leftmost);
|
bool renderspritenow = reg_2001.show_obj && (xt > 0 || reg_2001.show_obj_leftmost) && nes.CoreInputComm.NES_ShowOBJ;
|
||||||
bool renderbgnow = reg_2001.show_bg && (xt > 0 || reg_2001.show_bg_leftmost);
|
bool renderbgnow = reg_2001.show_bg && (xt > 0 || reg_2001.show_bg_leftmost) && nes.CoreInputComm.NES_ShowBG;
|
||||||
|
|
||||||
for (int xp = 0; xp < 8; xp++, rasterpos++)
|
for (int xp = 0; xp < 8; xp++, rasterpos++)
|
||||||
{
|
{
|
||||||
|
@ -176,10 +176,15 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
byte pt_0 = bgdata[bgtile].pt_0;
|
byte pt_0 = bgdata[bgtile].pt_0;
|
||||||
byte pt_1 = bgdata[bgtile].pt_1;
|
byte pt_1 = bgdata[bgtile].pt_1;
|
||||||
pixel = ((pt_0 >> (7 - bgpx)) & 1) | (((pt_1 >> (7 - bgpx)) & 1) << 1);
|
pixel = ((pt_0 >> (7 - bgpx)) & 1) | (((pt_1 >> (7 - bgpx)) & 1) << 1);
|
||||||
if(pixel != 0)
|
if (pixel != 0)
|
||||||
pixel |= bgdata[bgtile].at;
|
pixel |= bgdata[bgtile].at;
|
||||||
|
pixelcolor = PALRAM[pixel];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pixelcolor = PALRAM[pixel];
|
||||||
|
pixelcolor |= 0x8000;
|
||||||
}
|
}
|
||||||
pixelcolor = PALRAM[pixel];
|
|
||||||
|
|
||||||
//look for a sprite to be drawn
|
//look for a sprite to be drawn
|
||||||
bool havepixel = false;
|
bool havepixel = false;
|
||||||
|
@ -272,9 +277,12 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
//set the flag and bail out.
|
//set the flag and bail out.
|
||||||
if (oamcount >= 8 && reg_2001.PPUON)
|
if (oamcount >= 8 && reg_2001.PPUON)
|
||||||
{
|
{
|
||||||
Reg2002_objoverflow = true;
|
//should we set this flag anyway??
|
||||||
if (SPRITELIMIT)
|
if (!nes.CoreInputComm.NES_UnlimitedSprites)
|
||||||
|
{
|
||||||
|
Reg2002_objoverflow = true;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//just copy some bytes into the internal sprite buffer
|
//just copy some bytes into the internal sprite buffer
|
||||||
|
|
|
@ -41,6 +41,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
|
|
||||||
public PCEngine(NecSystemType type)
|
public PCEngine(NecSystemType type)
|
||||||
{
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
Type = type;
|
Type = type;
|
||||||
Controller = NullController.GetNullController();
|
Controller = NullController.GetNullController();
|
||||||
Cpu = new HuC6280();
|
Cpu = new HuC6280();
|
||||||
|
@ -124,6 +125,9 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
islag = false;
|
islag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
get { return (IVideoProvider) VPC ?? VDC1; }
|
get { return (IVideoProvider) VPC ?? VDC1; }
|
||||||
|
@ -298,17 +302,6 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
switch (query)
|
|
||||||
{
|
|
||||||
case EmulatorQuery.VsyncRate:
|
|
||||||
return 60.0;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,8 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
public Genesis(bool sega360)
|
public Genesis(bool sega360)
|
||||||
{
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
|
|
||||||
if (sega360) MainCPU = new MC68K(this);
|
if (sega360) MainCPU = new MC68K(this);
|
||||||
_MainCPU = new M68000();
|
_MainCPU = new M68000();
|
||||||
SoundCPU = new Z80A();
|
SoundCPU = new Z80A();
|
||||||
|
@ -127,9 +129,14 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PSG.EndFrame(SoundCPU.TotalExecutedCycles);
|
PSG.EndFrame(SoundCPU.TotalExecutedCycles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
get { return VDP; }
|
get { return VDP; }
|
||||||
}
|
}
|
||||||
|
@ -191,11 +198,6 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() {}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -58,6 +58,11 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
public DisplayType DisplayType { get; set; }
|
public DisplayType DisplayType { get; set; }
|
||||||
public bool DeterministicEmulation { get; set; }
|
public bool DeterministicEmulation { get; set; }
|
||||||
|
|
||||||
|
public SMS()
|
||||||
|
{
|
||||||
|
CoreOutputComm = new CoreOutputComm();
|
||||||
|
}
|
||||||
|
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
if (Controller == null)
|
if (Controller == null)
|
||||||
|
@ -111,6 +116,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
RomBanks = (byte)(RomData.Length/BankSize);
|
RomBanks = (byte)(RomData.Length/BankSize);
|
||||||
Options = game.GetOptions();
|
Options = game.GetOptions();
|
||||||
DisplayType = DisplayType.NTSC;
|
DisplayType = DisplayType.NTSC;
|
||||||
|
CoreOutputComm.VsyncRate = DisplayType == DisplayType.NTSC ? 60d : 50d;
|
||||||
foreach (string option in Options)
|
foreach (string option in Options)
|
||||||
{
|
{
|
||||||
var args = option.Split('=');
|
var args = option.Split('=');
|
||||||
|
@ -324,6 +330,8 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
}
|
}
|
||||||
|
|
||||||
public IVideoProvider VideoProvider { get { return Vdp; } }
|
public IVideoProvider VideoProvider { get { return Vdp; } }
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
private ISoundProvider ActiveSoundProvider;
|
private ISoundProvider ActiveSoundProvider;
|
||||||
public ISoundProvider SoundProvider { get { return ActiveSoundProvider; } }
|
public ISoundProvider SoundProvider { get { return ActiveSoundProvider; } }
|
||||||
|
@ -372,14 +380,6 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
// TODO I have concerns about this .Query thing- at least for target fps, but I leave it for now
|
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
if (query == EmulatorQuery.VsyncRate)
|
|
||||||
return DisplayType == DisplayType.NTSC ? 60d : 50d;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() {}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,6 +11,8 @@ namespace BizHawk
|
||||||
|
|
||||||
private int[] frameBuffer = new int[256 * 192];
|
private int[] frameBuffer = new int[256 * 192];
|
||||||
private Random rand = new Random();
|
private Random rand = new Random();
|
||||||
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
public IVideoProvider VideoProvider { get { return this; } }
|
public IVideoProvider VideoProvider { get { return this; } }
|
||||||
public ISoundProvider SoundProvider { get { return this; } }
|
public ISoundProvider SoundProvider { get { return this; } }
|
||||||
public NullEmulator()
|
public NullEmulator()
|
||||||
|
@ -51,10 +53,6 @@ namespace BizHawk
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
public void Dispose() { }
|
public void Dispose() { }
|
||||||
public object Query(EmulatorQuery query)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NullSound : ISoundProvider
|
public class NullSound : ISoundProvider
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace BizHawk
|
||||||
|
{
|
||||||
|
public class CoreInputComm
|
||||||
|
{
|
||||||
|
public int NES_BackdropColor;
|
||||||
|
public bool NES_UnlimitedSprites;
|
||||||
|
public bool NES_ShowBG, NES_ShowOBJ;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CoreOutputComm
|
||||||
|
{
|
||||||
|
public double VsyncRate = 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -33,8 +33,9 @@ namespace BizHawk
|
||||||
void LoadStateBinary(BinaryReader reader);
|
void LoadStateBinary(BinaryReader reader);
|
||||||
byte[] SaveStateBinary();
|
byte[] SaveStateBinary();
|
||||||
|
|
||||||
//arbitrary extensible query mechanism
|
//arbitrary extensible core comm mechanism
|
||||||
object Query(EmulatorQuery query);
|
CoreInputComm CoreInputComm { get; set; }
|
||||||
|
CoreOutputComm CoreOutputComm { get; }
|
||||||
|
|
||||||
// ----- Client Debugging API stuff -----
|
// ----- Client Debugging API stuff -----
|
||||||
IList<MemoryDomain> MemoryDomains { get; }
|
IList<MemoryDomain> MemoryDomains { get; }
|
||||||
|
@ -100,9 +101,4 @@ namespace BizHawk
|
||||||
public enum Endian { Big, Little, Unknown }
|
public enum Endian { Big, Little, Unknown }
|
||||||
|
|
||||||
public enum DisplayType { NTSC, PAL }
|
public enum DisplayType { NTSC, PAL }
|
||||||
|
|
||||||
public enum EmulatorQuery
|
|
||||||
{
|
|
||||||
VsyncRate
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ namespace BizHawk.MultiClient
|
||||||
public static IRenderer RenderPanel;
|
public static IRenderer RenderPanel;
|
||||||
public static Config Config;
|
public static Config Config;
|
||||||
public static IEmulator Emulator;
|
public static IEmulator Emulator;
|
||||||
|
public static CoreInputComm CoreInputComm;
|
||||||
public static RomGame Game;
|
public static RomGame Game;
|
||||||
public static Controller ClientControls;
|
public static Controller ClientControls;
|
||||||
public static Controller SMSControls;
|
public static Controller SMSControls;
|
||||||
|
|
|
@ -705,6 +705,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
NESGraphicsConfig g = new NESGraphicsConfig();
|
NESGraphicsConfig g = new NESGraphicsConfig();
|
||||||
g.ShowDialog();
|
g.ShowDialog();
|
||||||
|
SyncCoreInputComm();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -77,6 +77,8 @@ namespace BizHawk.MultiClient
|
||||||
return Util.ReadAllBytes(NesCartFile.GetStream());
|
return Util.ReadAllBytes(NesCartFile.GetStream());
|
||||||
};
|
};
|
||||||
Global.MainForm = this;
|
Global.MainForm = this;
|
||||||
|
Global.CoreInputComm = new CoreInputComm();
|
||||||
|
SyncCoreInputComm();
|
||||||
|
|
||||||
Database.LoadDatabase(PathManager.GetExePathAbsolute() + "\\gamedb.txt");
|
Database.LoadDatabase(PathManager.GetExePathAbsolute() + "\\gamedb.txt");
|
||||||
|
|
||||||
|
@ -214,6 +216,14 @@ namespace BizHawk.MultiClient
|
||||||
InputLog = new Movie(PathManager.MakeAbsolutePath(Global.Config.MoviesPath, "") + "\\log.tas", m);
|
InputLog = new Movie(PathManager.MakeAbsolutePath(Global.Config.MoviesPath, "") + "\\log.tas", m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SyncCoreInputComm()
|
||||||
|
{
|
||||||
|
Global.CoreInputComm.NES_BackdropColor = Global.Config.NESBackgroundColor;
|
||||||
|
Global.CoreInputComm.NES_UnlimitedSprites = Global.Config.NESAllowMoreThanEightSprites;
|
||||||
|
Global.CoreInputComm.NES_ShowBG = Global.Config.NESDispBackground;
|
||||||
|
Global.CoreInputComm.NES_ShowOBJ = Global.Config.NESDispSprites;
|
||||||
|
}
|
||||||
|
|
||||||
void SyncPresentationMode()
|
void SyncPresentationMode()
|
||||||
{
|
{
|
||||||
bool gdi = Global.Config.ForceGDI;
|
bool gdi = Global.Config.ForceGDI;
|
||||||
|
@ -786,6 +796,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
nextEmulator.CoreInputComm = Global.CoreInputComm;
|
||||||
nextEmulator.LoadGame(game);
|
nextEmulator.LoadGame(game);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -825,10 +836,7 @@ namespace BizHawk.MultiClient
|
||||||
//setup the throttle based on platform's specifications
|
//setup the throttle based on platform's specifications
|
||||||
//(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
//(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
||||||
{
|
{
|
||||||
object o = Global.Emulator.Query(EmulatorQuery.VsyncRate);
|
throttle.SetCoreFps( Global.Emulator.CoreOutputComm.VsyncRate);
|
||||||
if (o is double)
|
|
||||||
throttle.SetCoreFps((double)o);
|
|
||||||
else throttle.SetCoreFps(60);
|
|
||||||
SyncThrottle();
|
SyncThrottle();
|
||||||
}
|
}
|
||||||
RamSearch1.Restart();
|
RamSearch1.Restart();
|
||||||
|
@ -1931,7 +1939,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void loadConfigToolStripMenuItem_Click(object sender, EventArgs e)
|
private void loadConfigToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config = ConfigService.Load<Config>("config.ini");
|
Global.Config = ConfigService.Load<Config>(PathManager.DefaultIniPath);
|
||||||
Global.RenderPanel.AddMessage("Saved loaded");
|
Global.RenderPanel.AddMessage("Saved loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1953,7 +1961,7 @@ namespace BizHawk.MultiClient
|
||||||
RamSearch1.SaveConfigSettings();
|
RamSearch1.SaveConfigSettings();
|
||||||
if (!HexEditor1.IsDisposed)
|
if (!HexEditor1.IsDisposed)
|
||||||
HexEditor1.SaveConfigSettings();
|
HexEditor1.SaveConfigSettings();
|
||||||
ConfigService.Save("config.ini", Global.Config);
|
ConfigService.Save(PathManager.DefaultIniPath, Global.Config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PreviousSlot()
|
private void PreviousSlot()
|
||||||
|
|
|
@ -41,13 +41,13 @@
|
||||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||||
this.ChangeBGColor = new System.Windows.Forms.Button();
|
this.ChangeBGColor = new System.Windows.Forms.Button();
|
||||||
this.BackGroundColorNumber = new System.Windows.Forms.TextBox();
|
this.BackGroundColorNumber = new System.Windows.Forms.TextBox();
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||||
this.BackgroundColorPanel = new System.Windows.Forms.Panel();
|
this.BackgroundColorPanel = new System.Windows.Forms.Panel();
|
||||||
this.DispBackground = new System.Windows.Forms.CheckBox();
|
this.DispBackground = new System.Windows.Forms.CheckBox();
|
||||||
this.DispSprites = new System.Windows.Forms.CheckBox();
|
this.DispSprites = new System.Windows.Forms.CheckBox();
|
||||||
this.BGColorDialog = new System.Windows.Forms.ColorDialog();
|
this.BGColorDialog = new System.Windows.Forms.ColorDialog();
|
||||||
|
this.checkUseBackdropColor = new System.Windows.Forms.CheckBox();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
this.groupBox3.SuspendLayout();
|
this.groupBox3.SuspendLayout();
|
||||||
|
@ -157,6 +157,7 @@
|
||||||
// ClipLeftAndRightCheckBox
|
// ClipLeftAndRightCheckBox
|
||||||
//
|
//
|
||||||
this.ClipLeftAndRightCheckBox.AutoSize = true;
|
this.ClipLeftAndRightCheckBox.AutoSize = true;
|
||||||
|
this.ClipLeftAndRightCheckBox.Enabled = false;
|
||||||
this.ClipLeftAndRightCheckBox.Location = new System.Drawing.Point(9, 42);
|
this.ClipLeftAndRightCheckBox.Location = new System.Drawing.Point(9, 42);
|
||||||
this.ClipLeftAndRightCheckBox.Name = "ClipLeftAndRightCheckBox";
|
this.ClipLeftAndRightCheckBox.Name = "ClipLeftAndRightCheckBox";
|
||||||
this.ClipLeftAndRightCheckBox.Size = new System.Drawing.Size(186, 17);
|
this.ClipLeftAndRightCheckBox.Size = new System.Drawing.Size(186, 17);
|
||||||
|
@ -168,9 +169,9 @@
|
||||||
//
|
//
|
||||||
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.groupBox3.Controls.Add(this.checkUseBackdropColor);
|
||||||
this.groupBox3.Controls.Add(this.ChangeBGColor);
|
this.groupBox3.Controls.Add(this.ChangeBGColor);
|
||||||
this.groupBox3.Controls.Add(this.BackGroundColorNumber);
|
this.groupBox3.Controls.Add(this.BackGroundColorNumber);
|
||||||
this.groupBox3.Controls.Add(this.label3);
|
|
||||||
this.groupBox3.Controls.Add(this.label2);
|
this.groupBox3.Controls.Add(this.label2);
|
||||||
this.groupBox3.Controls.Add(this.groupBox4);
|
this.groupBox3.Controls.Add(this.groupBox4);
|
||||||
this.groupBox3.Controls.Add(this.DispBackground);
|
this.groupBox3.Controls.Add(this.DispBackground);
|
||||||
|
@ -180,11 +181,11 @@
|
||||||
this.groupBox3.Size = new System.Drawing.Size(352, 128);
|
this.groupBox3.Size = new System.Drawing.Size(352, 128);
|
||||||
this.groupBox3.TabIndex = 5;
|
this.groupBox3.TabIndex = 5;
|
||||||
this.groupBox3.TabStop = false;
|
this.groupBox3.TabStop = false;
|
||||||
this.groupBox3.Text = "Background and Sprites";
|
this.groupBox3.Text = "BG and Sprites";
|
||||||
//
|
//
|
||||||
// ChangeBGColor
|
// ChangeBGColor
|
||||||
//
|
//
|
||||||
this.ChangeBGColor.Location = new System.Drawing.Point(136, 98);
|
this.ChangeBGColor.Location = new System.Drawing.Point(112, 98);
|
||||||
this.ChangeBGColor.Name = "ChangeBGColor";
|
this.ChangeBGColor.Name = "ChangeBGColor";
|
||||||
this.ChangeBGColor.Size = new System.Drawing.Size(52, 23);
|
this.ChangeBGColor.Size = new System.Drawing.Size(52, 23);
|
||||||
this.ChangeBGColor.TabIndex = 35;
|
this.ChangeBGColor.TabIndex = 35;
|
||||||
|
@ -194,30 +195,21 @@
|
||||||
//
|
//
|
||||||
// BackGroundColorNumber
|
// BackGroundColorNumber
|
||||||
//
|
//
|
||||||
this.BackGroundColorNumber.Location = new System.Drawing.Point(62, 100);
|
this.BackGroundColorNumber.Location = new System.Drawing.Point(47, 100);
|
||||||
this.BackGroundColorNumber.MaxLength = 8;
|
this.BackGroundColorNumber.MaxLength = 8;
|
||||||
this.BackGroundColorNumber.Name = "BackGroundColorNumber";
|
this.BackGroundColorNumber.Name = "BackGroundColorNumber";
|
||||||
this.BackGroundColorNumber.ReadOnly = true;
|
this.BackGroundColorNumber.ReadOnly = true;
|
||||||
this.BackGroundColorNumber.Size = new System.Drawing.Size(59, 20);
|
this.BackGroundColorNumber.Size = new System.Drawing.Size(59, 20);
|
||||||
this.BackGroundColorNumber.TabIndex = 5;
|
this.BackGroundColorNumber.TabIndex = 5;
|
||||||
//
|
//
|
||||||
// label3
|
|
||||||
//
|
|
||||||
this.label3.AutoSize = true;
|
|
||||||
this.label3.Location = new System.Drawing.Point(43, 102);
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
this.label3.Size = new System.Drawing.Size(18, 13);
|
|
||||||
this.label3.TabIndex = 4;
|
|
||||||
this.label3.Text = "0x";
|
|
||||||
//
|
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(9, 79);
|
this.label2.Location = new System.Drawing.Point(9, 79);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(246, 13);
|
this.label2.Size = new System.Drawing.Size(178, 13);
|
||||||
this.label2.TabIndex = 3;
|
this.label2.TabIndex = 3;
|
||||||
this.label2.Text = "Background color when Backgrounds are disabled";
|
this.label2.Text = "Backdrop color when BG is disabled";
|
||||||
//
|
//
|
||||||
// groupBox4
|
// groupBox4
|
||||||
//
|
//
|
||||||
|
@ -242,9 +234,9 @@
|
||||||
this.DispBackground.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.DispBackground.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.DispBackground.Location = new System.Drawing.Point(9, 42);
|
this.DispBackground.Location = new System.Drawing.Point(9, 42);
|
||||||
this.DispBackground.Name = "DispBackground";
|
this.DispBackground.Name = "DispBackground";
|
||||||
this.DispBackground.Size = new System.Drawing.Size(121, 17);
|
this.DispBackground.Size = new System.Drawing.Size(78, 17);
|
||||||
this.DispBackground.TabIndex = 30;
|
this.DispBackground.TabIndex = 30;
|
||||||
this.DispBackground.Text = "Display Background";
|
this.DispBackground.Text = "Display BG";
|
||||||
this.DispBackground.UseVisualStyleBackColor = true;
|
this.DispBackground.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// DispSprites
|
// DispSprites
|
||||||
|
@ -259,6 +251,18 @@
|
||||||
this.DispSprites.Text = "Display Sprites";
|
this.DispSprites.Text = "Display Sprites";
|
||||||
this.DispSprites.UseVisualStyleBackColor = true;
|
this.DispSprites.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// checkUseBackdropColor
|
||||||
|
//
|
||||||
|
this.checkUseBackdropColor.AutoSize = true;
|
||||||
|
this.checkUseBackdropColor.Checked = true;
|
||||||
|
this.checkUseBackdropColor.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.checkUseBackdropColor.Location = new System.Drawing.Point(170, 100);
|
||||||
|
this.checkUseBackdropColor.Name = "checkUseBackdropColor";
|
||||||
|
this.checkUseBackdropColor.Size = new System.Drawing.Size(59, 17);
|
||||||
|
this.checkUseBackdropColor.TabIndex = 36;
|
||||||
|
this.checkUseBackdropColor.Text = "Enable";
|
||||||
|
this.checkUseBackdropColor.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// NESGraphicsConfig
|
// NESGraphicsConfig
|
||||||
//
|
//
|
||||||
this.AcceptButton = this.OK;
|
this.AcceptButton = this.OK;
|
||||||
|
@ -306,9 +310,9 @@
|
||||||
private System.Windows.Forms.GroupBox groupBox4;
|
private System.Windows.Forms.GroupBox groupBox4;
|
||||||
private System.Windows.Forms.Panel BackgroundColorPanel;
|
private System.Windows.Forms.Panel BackgroundColorPanel;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox BackGroundColorNumber;
|
private System.Windows.Forms.TextBox BackGroundColorNumber;
|
||||||
private System.Windows.Forms.Button ChangeBGColor;
|
private System.Windows.Forms.Button ChangeBGColor;
|
||||||
private System.Windows.Forms.ColorDialog BGColorDialog;
|
private System.Windows.Forms.ColorDialog BGColorDialog;
|
||||||
|
private System.Windows.Forms.CheckBox checkUseBackdropColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -42,7 +42,8 @@ namespace BizHawk.MultiClient
|
||||||
PalettePath.Text = Global.Config.NESPaletteFile;
|
PalettePath.Text = Global.Config.NESPaletteFile;
|
||||||
DispSprites.Checked = Global.Config.NESDispSprites;
|
DispSprites.Checked = Global.Config.NESDispSprites;
|
||||||
DispBackground.Checked = Global.Config.NESDispBackground;
|
DispBackground.Checked = Global.Config.NESDispBackground;
|
||||||
BGColorDialog.Color = Color.FromArgb(Global.Config.NESBackgroundColor);
|
BGColorDialog.Color = Color.FromArgb(unchecked(Global.Config.NESBackgroundColor | (int)0xFF000000));
|
||||||
|
checkUseBackdropColor.Checked = (Global.Config.NESBackgroundColor & 0xFF000000) != 0;
|
||||||
SetColorBox();
|
SetColorBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +90,9 @@ namespace BizHawk.MultiClient
|
||||||
Global.Config.NESAutoLoadPalette = AutoLoadPalette.Checked;
|
Global.Config.NESAutoLoadPalette = AutoLoadPalette.Checked;
|
||||||
Global.Config.NESDispSprites = DispSprites.Checked;
|
Global.Config.NESDispSprites = DispSprites.Checked;
|
||||||
Global.Config.NESDispBackground = DispBackground.Checked;
|
Global.Config.NESDispBackground = DispBackground.Checked;
|
||||||
|
Global.Config.NESBackgroundColor = BGColorDialog.Color.ToArgb();
|
||||||
|
if (!checkUseBackdropColor.Checked)
|
||||||
|
Global.Config.NESBackgroundColor &= 0x00FFFFFF;
|
||||||
|
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
@ -96,7 +100,7 @@ namespace BizHawk.MultiClient
|
||||||
private void SetColorBox()
|
private void SetColorBox()
|
||||||
{
|
{
|
||||||
int color = BGColorDialog.Color.ToArgb();
|
int color = BGColorDialog.Color.ToArgb();
|
||||||
BackGroundColorNumber.Text = String.Format("{0:X8}", color);
|
BackGroundColorNumber.Text = String.Format("#{0:X8}", color).Substring(2,6);
|
||||||
BackgroundColorPanel.BackColor = BGColorDialog.Color;
|
BackgroundColorPanel.BackColor = BGColorDialog.Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace BizHawk.MultiClient
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
|
||||||
Global.Config = ConfigService.Load<Config>(PathManager.GetExePathAbsolute() + "\\config.ini");
|
Global.Config = ConfigService.Load<Config>(PathManager.DefaultIniPath);
|
||||||
|
|
||||||
try { Global.DSound = new DirectSound(); }
|
try { Global.DSound = new DirectSound(); }
|
||||||
catch {
|
catch {
|
||||||
|
|
|
@ -18,10 +18,22 @@ namespace BizHawk.MultiClient
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Makes a path relative to the %exe% dir
|
||||||
|
/// </summary>
|
||||||
|
public static string MakeProgramRelativePath(string path) { return MakeAbsolutePath("%exe%/" + path, ""); }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The location of the default INI file
|
||||||
|
/// </summary>
|
||||||
|
public static string DefaultIniPath { get { return MakeProgramRelativePath("config.ini"); } }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets absolute base as derived from EXE
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public static string GetBasePathAbsolute()
|
public static string GetBasePathAbsolute()
|
||||||
{
|
{
|
||||||
//Gets absolute base as derived from EXE
|
|
||||||
|
|
||||||
if (Global.Config.BasePath.Length < 1) //If empty, then EXE path
|
if (Global.Config.BasePath.Length < 1) //If empty, then EXE path
|
||||||
return GetExePathAbsolute();
|
return GetExePathAbsolute();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue