N64: Implement the reflection method to store and retrieve the plugin settings
This commit is contained in:
parent
40cea9085a
commit
2245975217
|
@ -99,6 +99,35 @@ namespace BizHawk
|
|||
return int.Parse(Options[option], NumberStyles.HexNumber);
|
||||
}
|
||||
|
||||
/// <param name="parameter">The option to look up</param>
|
||||
/// <param name="defaultVal">The value to return if the option is invalid or doesn't exist</param>
|
||||
/// <returns> The bool value from the database if present, otherwise the given default value</returns>
|
||||
public bool GetBool(string parameter, bool defaultVal)
|
||||
{
|
||||
if (OptionPresent(parameter) && OptionValue(parameter) == "true")
|
||||
return true;
|
||||
else
|
||||
return defaultVal;
|
||||
}
|
||||
|
||||
/// <param name="parameter">The option to look up</param>
|
||||
/// <param name="defaultVal">The value to return if the option is invalid or doesn't exist</param>
|
||||
/// <returns> The int value from the database if present, otherwise the given default value</returns>
|
||||
public int GetInt(string parameter, int defaultVal)
|
||||
{
|
||||
if (OptionPresent(parameter))
|
||||
try
|
||||
{
|
||||
return int.Parse(OptionValue(parameter));
|
||||
}
|
||||
catch
|
||||
{
|
||||
return defaultVal;
|
||||
}
|
||||
else
|
||||
return defaultVal;
|
||||
}
|
||||
|
||||
public ICollection<string> GetOptions()
|
||||
{
|
||||
return Options.Keys;
|
||||
|
|
|
@ -1968,6 +1968,40 @@ namespace BizHawk.MultiClient
|
|||
get { return PLUGINTYPE.RICE; }
|
||||
}
|
||||
|
||||
public void FillPerGameHacks(GameInfo game)
|
||||
{
|
||||
if (Global.Config.RicePlugin.UseDefaultHacks)
|
||||
{
|
||||
DisableTextureCRC = game.GetBool("RiceDisableTextureCRC", false);
|
||||
DisableCulling = game.GetBool("RiceDisableCulling", false);
|
||||
IncTexRectEdge = game.GetBool("RiceIncTexRectEdge", false);
|
||||
ZHack = game.GetBool("RiceZHack", false);
|
||||
TextureScaleHack = game.GetBool("RiceTextureScaleHack", false);
|
||||
PrimaryDepthHack = game.GetBool("RicePrimaryDepthHack", false);
|
||||
Texture1Hack = game.GetBool("RiceTexture1Hack", false);
|
||||
FastLoadTile = game.GetBool("RiceFastLoadTile", false);
|
||||
UseSmallerTexture = game.GetBool("RiceUseSmallerTexture", false);
|
||||
VIWidth = game.GetInt("RiceVIWidth", -1);
|
||||
VIHeight = game.GetInt("RiceVIHeight", -1);
|
||||
UseCIWidthAndRatio = game.GetInt("RiceUseCIWidthAndRatio", 0);
|
||||
FullTMEM = game.GetInt("RiceFullTMEM", 0);
|
||||
TxtSizeMethod2 = game.GetBool("RiceTxtSizeMethod2", false);
|
||||
EnableTxtLOD = game.GetBool("RiceEnableTxtLOD", false);
|
||||
FastTextureCRC = game.GetInt("RiceFastTextureCRC", 0);
|
||||
EmulateClear = game.GetBool("RiceEmulateClear", false);
|
||||
ForceScreenClear = game.GetBool("RiceForceScreenClear", false);
|
||||
AccurateTextureMappingHack = game.GetInt("RiceAccurateTextureMappingHack", 0);
|
||||
NormalBlender = game.GetInt("RiceNormalBlender", 0);
|
||||
DisableBlender = game.GetBool("RiceDisableBlender", false);
|
||||
ForceDepthBuffer = game.GetBool("RiceForceDepthBuffer", false);
|
||||
DisableObjBG = game.GetBool("RiceDisableObjBG", false);
|
||||
FrameBufferOption = game.GetInt("RiceFrameBufferOption", 0);
|
||||
RenderToTextureOption = game.GetInt("RiceRenderToTextureOption", 0);
|
||||
ScreenUpdateSettingHack = game.GetInt("RiceScreenUpdateSettingHack", 0);
|
||||
EnableHacksForGame = game.GetInt("RiceEnableHacksForGame", 0);
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<string, object> GetPluginSettings()
|
||||
{
|
||||
//TODO: deal witn the game depedent settings
|
||||
|
@ -1975,10 +2009,10 @@ namespace BizHawk.MultiClient
|
|||
System.Reflection.MemberInfo[] members = Global.Config.RicePlugin.GetType().GetMembers();
|
||||
foreach (System.Reflection.MemberInfo member in members)
|
||||
{
|
||||
object field = Global.Config.RicePlugin.GetType().GetField(member.Name).GetValue(Global.Config.RicePlugin);
|
||||
if (member.MemberType.ToString() == "Field")
|
||||
{
|
||||
dictionary.Add(member.Name, member);
|
||||
object field = Global.Config.RicePlugin.GetType().GetField(member.Name).GetValue(Global.Config.RicePlugin);
|
||||
dictionary.Add(member.Name, field);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2485,7 +2485,7 @@ namespace BizHawk.MultiClient
|
|||
if (INTERIM)
|
||||
{
|
||||
Global.Game = game;
|
||||
VideoPluginSettings video_settings = N64GenerateVideoSettings();
|
||||
VideoPluginSettings video_settings = N64GenerateVideoSettings(game);
|
||||
nextEmulator = new N64(nextComm, game, rom.RomData, video_settings);
|
||||
}
|
||||
break;
|
||||
|
@ -3862,110 +3862,13 @@ namespace BizHawk.MultiClient
|
|||
Cheats1.Focus();
|
||||
}
|
||||
|
||||
public VideoPluginSettings N64GenerateVideoSettings()
|
||||
public VideoPluginSettings N64GenerateVideoSettings(GameInfo game)
|
||||
{
|
||||
VideoPluginSettings video_settings = new VideoPluginSettings(Global.Config.N64VidPlugin, Global.Config.N64VideoSizeX, Global.Config.N64VideoSizeY);
|
||||
if (Global.Config.N64VidPlugin == "Rice")
|
||||
{
|
||||
|
||||
//TODO: figure out game dependent values, and then do this:
|
||||
//video_settings.Parameters = Global.Config.RicePlugin.GetPluginSettings();
|
||||
|
||||
video_settings.Parameters.Add("NormalAlphaBlender", Global.Config.RicePlugin.NormalAlphaBlender);
|
||||
video_settings.Parameters.Add("FastTextureLoading", Global.Config.RicePlugin.FastTextureLoading);
|
||||
video_settings.Parameters.Add("AccurateTextureMapping", Global.Config.RicePlugin.AccurateTextureMapping);
|
||||
video_settings.Parameters.Add("InN64Resolution", Global.Config.RicePlugin.InN64Resolution);
|
||||
video_settings.Parameters.Add("SaveVRAM", Global.Config.RicePlugin.SaveVRAM);
|
||||
video_settings.Parameters.Add("DoubleSizeForSmallTxtrBuf", Global.Config.RicePlugin.DoubleSizeForSmallTxtrBuf);
|
||||
video_settings.Parameters.Add("DefaultCombinerDisable", Global.Config.RicePlugin.DefaultCombinerDisable);
|
||||
video_settings.Parameters.Add("EnableHacks", Global.Config.RicePlugin.EnableHacks);
|
||||
video_settings.Parameters.Add("WinFrameMode", Global.Config.RicePlugin.WinFrameMode);
|
||||
video_settings.Parameters.Add("FullTMEMEmulation", Global.Config.RicePlugin.FullTMEMEmulation);
|
||||
video_settings.Parameters.Add("OpenGLVertexClipper", Global.Config.RicePlugin.OpenGLVertexClipper);
|
||||
video_settings.Parameters.Add("EnableSSE", Global.Config.RicePlugin.EnableSSE);
|
||||
video_settings.Parameters.Add("EnableVertexShader", Global.Config.RicePlugin.EnableVertexShader);
|
||||
video_settings.Parameters.Add("SkipFrame", Global.Config.RicePlugin.SkipFrame);
|
||||
video_settings.Parameters.Add("TexRectOnly", Global.Config.RicePlugin.TexRectOnly);
|
||||
video_settings.Parameters.Add("SmallTextureOnly", Global.Config.RicePlugin.SmallTextureOnly);
|
||||
video_settings.Parameters.Add("LoadHiResCRCOnly", Global.Config.RicePlugin.LoadHiResCRCOnly);
|
||||
video_settings.Parameters.Add("LoadHiResTextures", Global.Config.RicePlugin.LoadHiResTextures);
|
||||
video_settings.Parameters.Add("DumpTexturesToFiles", Global.Config.RicePlugin.DumpTexturesToFiles);
|
||||
video_settings.Parameters.Add("FrameBufferSetting", Global.Config.RicePlugin.FrameBufferSetting);
|
||||
video_settings.Parameters.Add("FrameBufferWriteBackControl", Global.Config.RicePlugin.FrameBufferWriteBackControl);
|
||||
video_settings.Parameters.Add("RenderToTexture", Global.Config.RicePlugin.RenderToTexture);
|
||||
video_settings.Parameters.Add("ScreenUpdateSetting", Global.Config.RicePlugin.ScreenUpdateSetting);
|
||||
video_settings.Parameters.Add("Mipmapping", Global.Config.RicePlugin.Mipmapping);
|
||||
video_settings.Parameters.Add("FogMethod", Global.Config.RicePlugin.FogMethod);
|
||||
video_settings.Parameters.Add("ForceTextureFilter", Global.Config.RicePlugin.ForceTextureFilter);
|
||||
video_settings.Parameters.Add("TextureEnhancement", Global.Config.RicePlugin.TextureEnhancement);
|
||||
video_settings.Parameters.Add("TextureEnhancementControl", Global.Config.RicePlugin.TextureEnhancementControl);
|
||||
video_settings.Parameters.Add("TextureQuality", Global.Config.RicePlugin.TextureQuality);
|
||||
video_settings.Parameters.Add("OpenGLDepthBufferSetting", Global.Config.RicePlugin.OpenGLDepthBufferSetting);
|
||||
video_settings.Parameters.Add("MultiSampling", Global.Config.RicePlugin.MultiSampling);
|
||||
video_settings.Parameters.Add("ColorQuality", Global.Config.RicePlugin.ColorQuality);
|
||||
video_settings.Parameters.Add("OpenGLRenderSetting", Global.Config.RicePlugin.OpenGLRenderSetting);
|
||||
video_settings.Parameters.Add("AnisotropicFiltering", Global.Config.RicePlugin.AnisotropicFiltering);
|
||||
|
||||
if (Global.Config.RicePlugin.UseDefaultHacks)
|
||||
{
|
||||
video_settings.Parameters.Add("DisableTextureCRC", N64GetBoolFromDB("RiceDisableTextureCRC"));
|
||||
video_settings.Parameters.Add("DisableCulling", N64GetBoolFromDB("RiceDisableCulling"));
|
||||
video_settings.Parameters.Add("IncTexRectEdge", N64GetBoolFromDB("RiceIncTexRectEdge"));
|
||||
video_settings.Parameters.Add("ZHack", N64GetBoolFromDB("RiceZHack"));
|
||||
video_settings.Parameters.Add("TextureScaleHack", N64GetBoolFromDB("RiceTextureScaleHack"));
|
||||
video_settings.Parameters.Add("PrimaryDepthHack", N64GetBoolFromDB("RicePrimaryDepthHack"));
|
||||
video_settings.Parameters.Add("Texture1Hack", N64GetBoolFromDB("RiceTexture1Hack"));
|
||||
video_settings.Parameters.Add("FastLoadTile", N64GetBoolFromDB("RiceFastLoadTile"));
|
||||
video_settings.Parameters.Add("UseSmallerTexture", N64GetBoolFromDB("RiceUseSmallerTexture"));
|
||||
video_settings.Parameters.Add("VIWidth", N64GetIntFromDB("RiceVIWidth", -1));
|
||||
video_settings.Parameters.Add("VIHeight", N64GetIntFromDB("RiceVIHeight", -1));
|
||||
video_settings.Parameters.Add("UseCIWidthAndRatio", N64GetIntFromDB("RiceUseCIWidthAndRatio", 0));
|
||||
video_settings.Parameters.Add("FullTMEM", N64GetIntFromDB("RiceFullTMEM", 0));
|
||||
video_settings.Parameters.Add("TxtSizeMethod2", N64GetBoolFromDB("RiceTxtSizeMethod2"));
|
||||
video_settings.Parameters.Add("EnableTxtLOD", N64GetBoolFromDB("RiceEnableTxtLOD"));
|
||||
video_settings.Parameters.Add("FastTextureCRC", N64GetIntFromDB("RiceFastTextureCRC", 0));
|
||||
video_settings.Parameters.Add("EmulateClear", N64GetBoolFromDB("RiceEmulateClear"));
|
||||
video_settings.Parameters.Add("ForceScreenClear", N64GetBoolFromDB("RiceForceScreenClear"));
|
||||
video_settings.Parameters.Add("AccurateTextureMappingHack", N64GetIntFromDB("RiceAccurateTextureMappingHack", 0));
|
||||
video_settings.Parameters.Add("NormalBlender", N64GetIntFromDB("RiceNormalBlender", 0));
|
||||
video_settings.Parameters.Add("DisableBlender", N64GetBoolFromDB("RiceDisableBlender"));
|
||||
video_settings.Parameters.Add("ForceDepthBuffer", N64GetBoolFromDB("RiceForceDepthBuffer"));
|
||||
video_settings.Parameters.Add("DisableObjBG", N64GetBoolFromDB("RiceDisableObjBG"));
|
||||
video_settings.Parameters.Add("FrameBufferOption", N64GetIntFromDB("RiceFrameBufferOption", 0));
|
||||
video_settings.Parameters.Add("RenderToTextureOption", N64GetIntFromDB("RiceRenderToTextureOption", 0));
|
||||
video_settings.Parameters.Add("ScreenUpdateSettingHack", N64GetIntFromDB("RiceScreenUpdateSettingHack", 0));
|
||||
video_settings.Parameters.Add("EnableHacksForGame", N64GetIntFromDB("RiceEnableHacksForGame", 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
video_settings.Parameters.Add("DisableTextureCRC", Global.Config.RicePlugin.DisableTextureCRC);
|
||||
video_settings.Parameters.Add("DisableCulling", Global.Config.RicePlugin.DisableCulling);
|
||||
video_settings.Parameters.Add("IncTexRectEdge", Global.Config.RicePlugin.IncTexRectEdge);
|
||||
video_settings.Parameters.Add("ZHack", Global.Config.RicePlugin.ZHack);
|
||||
video_settings.Parameters.Add("TextureScaleHack", Global.Config.RicePlugin.TextureScaleHack);
|
||||
video_settings.Parameters.Add("PrimaryDepthHack", Global.Config.RicePlugin.PrimaryDepthHack);
|
||||
video_settings.Parameters.Add("Texture1Hack", Global.Config.RicePlugin.Texture1Hack);
|
||||
video_settings.Parameters.Add("FastLoadTile", Global.Config.RicePlugin.FastLoadTile);
|
||||
video_settings.Parameters.Add("UseSmallerTexture", Global.Config.RicePlugin.UseSmallerTexture);
|
||||
video_settings.Parameters.Add("VIWidth", Global.Config.RicePlugin.VIWidth);
|
||||
video_settings.Parameters.Add("VIHeight", Global.Config.RicePlugin.VIHeight);
|
||||
video_settings.Parameters.Add("UseCIWidthAndRatio", Global.Config.RicePlugin.UseCIWidthAndRatio);
|
||||
video_settings.Parameters.Add("FullTMEM", Global.Config.RicePlugin.FullTMEM);
|
||||
video_settings.Parameters.Add("TxtSizeMethod2", Global.Config.RicePlugin.TxtSizeMethod2);
|
||||
video_settings.Parameters.Add("EnableTxtLOD", Global.Config.RicePlugin.EnableTxtLOD);
|
||||
video_settings.Parameters.Add("FastTextureCRC", Global.Config.RicePlugin.FastTextureCRC);
|
||||
video_settings.Parameters.Add("EmulateClear", Global.Config.RicePlugin.EmulateClear);
|
||||
video_settings.Parameters.Add("ForceScreenClear", Global.Config.RicePlugin.ForceScreenClear);
|
||||
video_settings.Parameters.Add("AccurateTextureMappingHack", Global.Config.RicePlugin.AccurateTextureMappingHack);
|
||||
video_settings.Parameters.Add("NormalBlender", Global.Config.RicePlugin.NormalBlender);
|
||||
video_settings.Parameters.Add("DisableBlender", Global.Config.RicePlugin.DisableBlender);
|
||||
video_settings.Parameters.Add("ForceDepthBuffer", Global.Config.RicePlugin.ForceDepthBuffer);
|
||||
video_settings.Parameters.Add("DisableObjBG", Global.Config.RicePlugin.DisableObjBG);
|
||||
video_settings.Parameters.Add("FrameBufferOption", Global.Config.RicePlugin.FrameBufferOption);
|
||||
video_settings.Parameters.Add("RenderToTextureOption", Global.Config.RicePlugin.RenderToTextureOption);
|
||||
video_settings.Parameters.Add("ScreenUpdateSettingHack", Global.Config.RicePlugin.ScreenUpdateSettingHack);
|
||||
video_settings.Parameters.Add("EnableHacksForGame", Global.Config.RicePlugin.EnableHacksForGame);
|
||||
}
|
||||
Global.Config.RicePlugin.FillPerGameHacks(game);
|
||||
video_settings.Parameters = Global.Config.RicePlugin.GetPluginSettings();
|
||||
}
|
||||
|
||||
return video_settings;
|
||||
|
|
Loading…
Reference in New Issue