N64 - make video size a setting, not a sync setting

This commit is contained in:
adelikat 2014-06-01 12:06:22 +00:00
parent 3c31d11c8b
commit aa2ae170f3
5 changed files with 404 additions and 365 deletions

View File

@ -412,7 +412,8 @@ namespace BizHawk.Client.Common
break;
case "N64":
nextEmulator = new N64(nextComm, game, rom.RomData, GetCoreSyncSettings<N64>());
nextEmulator = new N64(nextComm, game, rom.RomData,
GetCoreSettings<N64>(), GetCoreSyncSettings<N64>());
break;
case "WSWAN":
nextEmulator = new WonderSwan(nextComm, rom.RomData, Deterministic,

View File

@ -17,11 +17,6 @@ namespace BizHawk.Client.EmuHawk
public BizBoxInfoControl(CoreAttributes attributes)
{
if (attributes.CoreName.ToLower().StartsWith("bs"))
{
int zzz = 0;
}
InitializeComponent();
CoreNameLabel.Text = attributes.CoreName;

View File

@ -20,8 +20,7 @@ namespace BizHawk.Client.EmuHawk
}
// because mupen is a pile of garbage, this all needs to work even when N64 is not loaded
// never do this
static N64SyncSettings GetS()
private static N64SyncSettings GetSyncSettings()
{
if (Global.Emulator is N64)
{
@ -34,8 +33,20 @@ namespace BizHawk.Client.EmuHawk
}
}
// never do this
static void PutS(N64SyncSettings s)
private static N64Settings GetSettings()
{
if (Global.Emulator is N64)
{
return (N64Settings)Global.Emulator.GetSettings();
}
else
{
return (N64Settings)Global.Config.GetCoreSettings<N64>()
?? new N64Settings();
}
}
private static void PutSyncSettings(N64SyncSettings s)
{
if (Global.Emulator is N64)
{
@ -43,11 +54,22 @@ namespace BizHawk.Client.EmuHawk
}
else
{
// hack, don't do!
Global.Config.PutCoreSyncSettings<N64>(s);
}
}
private static void PutSettings(N64Settings s)
{
if (Global.Emulator is N64)
{
GlobalWin.MainForm.PutCoreSettings(s);
}
else
{
Global.Config.PutCoreSettings<N64>(s);
}
}
private void CancelBT_Click(object sender, EventArgs e)
{
//Add confirmation of cancelling change
@ -64,7 +86,8 @@ namespace BizHawk.Client.EmuHawk
private void SaveSettings()
{
var s = GetS();
var s = GetSettings();
var ss = GetSyncSettings();
//Global
var video_settings = VideoResolutionComboBox.SelectedItem.ToString();
@ -73,245 +96,247 @@ namespace BizHawk.Client.EmuHawk
s.VideoSizeY = Int32.Parse(strArr[1].Trim());
switch (PluginComboBox.Text)
{
case "Rice": s.VidPlugin = PLUGINTYPE.RICE; break;
case "Glide64": s.VidPlugin = PLUGINTYPE.GLIDE; break;
case "Glide64mk2": s.VidPlugin = PLUGINTYPE.GLIDE64MK2; break;
case "Rice": ss.VidPlugin = PLUGINTYPE.RICE; break;
case "Glide64": ss.VidPlugin = PLUGINTYPE.GLIDE; break;
case "Glide64mk2": ss.VidPlugin = PLUGINTYPE.GLIDE64MK2; break;
}
//Rice
s.RicePlugin.NormalAlphaBlender = RiceNormalAlphaBlender_CB.Checked;
s.RicePlugin.FastTextureLoading = RiceFastTextureLoading_CB.Checked;
s.RicePlugin.AccurateTextureMapping = RiceAccurateTextureMapping_CB.Checked;
s.RicePlugin.InN64Resolution = RiceInN64Resolution_CB.Checked;
s.RicePlugin.SaveVRAM = RiceSaveVRAM_CB.Checked;
s.RicePlugin.DoubleSizeForSmallTxtrBuf = RiceDoubleSizeForSmallTxtrBuf_CB.Checked;
s.RicePlugin.DefaultCombinerDisable = RiceDefaultCombinerDisable_CB.Checked;
s.RicePlugin.EnableHacks = RiceEnableHacks_CB.Checked;
s.RicePlugin.WinFrameMode = RiceWinFrameMode_CB.Checked;
s.RicePlugin.FullTMEMEmulation = RiceFullTMEMEmulation_CB.Checked;
s.RicePlugin.OpenGLVertexClipper = RiceOpenGLVertexClipper_CB.Checked;
s.RicePlugin.EnableSSE = RiceEnableSSE_CB.Checked;
s.RicePlugin.EnableVertexShader = RiceEnableVertexShader_CB.Checked;
s.RicePlugin.SkipFrame = RiceSkipFrame_CB.Checked;
s.RicePlugin.TexRectOnly = RiceTexRectOnly_CB.Checked;
s.RicePlugin.SmallTextureOnly = RiceSmallTextureOnly_CB.Checked;
s.RicePlugin.LoadHiResCRCOnly = RiceLoadHiResCRCOnly_CB.Checked;
s.RicePlugin.LoadHiResTextures = RiceLoadHiResTextures_CB.Checked;
s.RicePlugin.DumpTexturesToFiles = RiceDumpTexturesToFiles_CB.Checked;
ss.RicePlugin.NormalAlphaBlender = RiceNormalAlphaBlender_CB.Checked;
ss.RicePlugin.FastTextureLoading = RiceFastTextureLoading_CB.Checked;
ss.RicePlugin.AccurateTextureMapping = RiceAccurateTextureMapping_CB.Checked;
ss.RicePlugin.InN64Resolution = RiceInN64Resolution_CB.Checked;
ss.RicePlugin.SaveVRAM = RiceSaveVRAM_CB.Checked;
ss.RicePlugin.DoubleSizeForSmallTxtrBuf = RiceDoubleSizeForSmallTxtrBuf_CB.Checked;
ss.RicePlugin.DefaultCombinerDisable = RiceDefaultCombinerDisable_CB.Checked;
ss.RicePlugin.EnableHacks = RiceEnableHacks_CB.Checked;
ss.RicePlugin.WinFrameMode = RiceWinFrameMode_CB.Checked;
ss.RicePlugin.FullTMEMEmulation = RiceFullTMEMEmulation_CB.Checked;
ss.RicePlugin.OpenGLVertexClipper = RiceOpenGLVertexClipper_CB.Checked;
ss.RicePlugin.EnableSSE = RiceEnableSSE_CB.Checked;
ss.RicePlugin.EnableVertexShader = RiceEnableVertexShader_CB.Checked;
ss.RicePlugin.SkipFrame = RiceSkipFrame_CB.Checked;
ss.RicePlugin.TexRectOnly = RiceTexRectOnly_CB.Checked;
ss.RicePlugin.SmallTextureOnly = RiceSmallTextureOnly_CB.Checked;
ss.RicePlugin.LoadHiResCRCOnly = RiceLoadHiResCRCOnly_CB.Checked;
ss.RicePlugin.LoadHiResTextures = RiceLoadHiResTextures_CB.Checked;
ss.RicePlugin.DumpTexturesToFiles = RiceDumpTexturesToFiles_CB.Checked;
s.RicePlugin.FrameBufferSetting = RiceFrameBufferSetting_Combo.SelectedIndex;
s.RicePlugin.FrameBufferWriteBackControl = RiceFrameBufferWriteBackControl_Combo.SelectedIndex;
s.RicePlugin.RenderToTexture = RiceRenderToTexture_Combo.SelectedIndex;
s.RicePlugin.ScreenUpdateSetting = RiceScreenUpdateSetting_Combo.SelectedIndex;
s.RicePlugin.Mipmapping = RiceMipmapping_Combo.SelectedIndex;
s.RicePlugin.FogMethod = RiceFogMethod_Combo.SelectedIndex;
s.RicePlugin.ForceTextureFilter = RiceForceTextureFilter_Combo.SelectedIndex;
s.RicePlugin.TextureEnhancement = RiceTextureEnhancement_Combo.SelectedIndex;
s.RicePlugin.TextureEnhancementControl = RiceTextureEnhancementControl_Combo.SelectedIndex;
s.RicePlugin.TextureQuality = RiceTextureQuality_Combo.SelectedIndex;
s.RicePlugin.OpenGLDepthBufferSetting = (RiceOpenGLDepthBufferSetting_Combo.SelectedIndex + 1) * 16;
ss.RicePlugin.FrameBufferSetting = RiceFrameBufferSetting_Combo.SelectedIndex;
ss.RicePlugin.FrameBufferWriteBackControl = RiceFrameBufferWriteBackControl_Combo.SelectedIndex;
ss.RicePlugin.RenderToTexture = RiceRenderToTexture_Combo.SelectedIndex;
ss.RicePlugin.ScreenUpdateSetting = RiceScreenUpdateSetting_Combo.SelectedIndex;
ss.RicePlugin.Mipmapping = RiceMipmapping_Combo.SelectedIndex;
ss.RicePlugin.FogMethod = RiceFogMethod_Combo.SelectedIndex;
ss.RicePlugin.ForceTextureFilter = RiceForceTextureFilter_Combo.SelectedIndex;
ss.RicePlugin.TextureEnhancement = RiceTextureEnhancement_Combo.SelectedIndex;
ss.RicePlugin.TextureEnhancementControl = RiceTextureEnhancementControl_Combo.SelectedIndex;
ss.RicePlugin.TextureQuality = RiceTextureQuality_Combo.SelectedIndex;
ss.RicePlugin.OpenGLDepthBufferSetting = (RiceOpenGLDepthBufferSetting_Combo.SelectedIndex + 1) * 16;
switch (RiceMultiSampling_Combo.SelectedIndex)
{
case 0: s.RicePlugin.MultiSampling = 0; break;
case 1: s.RicePlugin.MultiSampling = 2; break;
case 2: s.RicePlugin.MultiSampling = 4; break;
case 3: s.RicePlugin.MultiSampling = 8; break;
case 4: s.RicePlugin.MultiSampling = 16; break;
default: s.RicePlugin.MultiSampling = 0; break;
case 0: ss.RicePlugin.MultiSampling = 0; break;
case 1: ss.RicePlugin.MultiSampling = 2; break;
case 2: ss.RicePlugin.MultiSampling = 4; break;
case 3: ss.RicePlugin.MultiSampling = 8; break;
case 4: ss.RicePlugin.MultiSampling = 16; break;
default: ss.RicePlugin.MultiSampling = 0; break;
}
s.RicePlugin.ColorQuality = RiceColorQuality_Combo.SelectedIndex;
s.RicePlugin.OpenGLRenderSetting = RiceOpenGLRenderSetting_Combo.SelectedIndex;
s.RicePlugin.AnisotropicFiltering = RiceAnisotropicFiltering_TB.Value;
ss.RicePlugin.ColorQuality = RiceColorQuality_Combo.SelectedIndex;
ss.RicePlugin.OpenGLRenderSetting = RiceOpenGLRenderSetting_Combo.SelectedIndex;
ss.RicePlugin.AnisotropicFiltering = RiceAnisotropicFiltering_TB.Value;
s.RicePlugin.UseDefaultHacks = RiceUseDefaultHacks_CB.Checked;
s.RicePlugin.DisableTextureCRC = RiceDisableTextureCRC_CB.Checked;
s.RicePlugin.DisableCulling = RiceDisableCulling_CB.Checked;
s.RicePlugin.IncTexRectEdge = RiceIncTexRectEdge_CB.Checked;
s.RicePlugin.ZHack = RiceZHack_CB.Checked;
s.RicePlugin.TextureScaleHack = RiceTextureScaleHack_CB.Checked;
s.RicePlugin.PrimaryDepthHack = RicePrimaryDepthHack_CB.Checked;
s.RicePlugin.Texture1Hack = RiceTexture1Hack_CB.Checked;
s.RicePlugin.FastLoadTile = RiceFastLoadTile_CB.Checked;
s.RicePlugin.UseSmallerTexture = RiceUseSmallerTexture_CB.Checked;
ss.RicePlugin.UseDefaultHacks = RiceUseDefaultHacks_CB.Checked;
ss.RicePlugin.DisableTextureCRC = RiceDisableTextureCRC_CB.Checked;
ss.RicePlugin.DisableCulling = RiceDisableCulling_CB.Checked;
ss.RicePlugin.IncTexRectEdge = RiceIncTexRectEdge_CB.Checked;
ss.RicePlugin.ZHack = RiceZHack_CB.Checked;
ss.RicePlugin.TextureScaleHack = RiceTextureScaleHack_CB.Checked;
ss.RicePlugin.PrimaryDepthHack = RicePrimaryDepthHack_CB.Checked;
ss.RicePlugin.Texture1Hack = RiceTexture1Hack_CB.Checked;
ss.RicePlugin.FastLoadTile = RiceFastLoadTile_CB.Checked;
ss.RicePlugin.UseSmallerTexture = RiceUseSmallerTexture_CB.Checked;
if (InputValidate.IsSigned(RiceVIWidth_Text.Text))
s.RicePlugin.VIWidth = int.Parse(RiceVIWidth_Text.Text);
ss.RicePlugin.VIWidth = int.Parse(RiceVIWidth_Text.Text);
else
s.RicePlugin.VIWidth = -1;
ss.RicePlugin.VIWidth = -1;
if (InputValidate.IsSigned(RiceVIHeight_Text.Text))
s.RicePlugin.VIHeight = int.Parse(RiceVIHeight_Text.Text);
ss.RicePlugin.VIHeight = int.Parse(RiceVIHeight_Text.Text);
else
s.RicePlugin.VIHeight = -1;
ss.RicePlugin.VIHeight = -1;
s.RicePlugin.UseCIWidthAndRatio = RiceUseCIWidthAndRatio_Combo.SelectedIndex;
s.RicePlugin.FullTMEM = RiceFullTMEM_Combo.SelectedIndex;
s.RicePlugin.TxtSizeMethod2 = RiceTxtSizeMethod2_CB.Checked;
s.RicePlugin.EnableTxtLOD = RiceEnableTxtLOD_CB.Checked;
s.RicePlugin.FastTextureCRC = RiceFastTextureCRC_Combo.SelectedIndex;
s.RicePlugin.EmulateClear = RiceEmulateClear_CB.Checked;
s.RicePlugin.ForceScreenClear = RiceForceScreenClear_CB.Checked;
s.RicePlugin.AccurateTextureMappingHack = RiceAccurateTextureMappingHack_Combo.SelectedIndex;
s.RicePlugin.NormalBlender = RiceNormalBlender_Combo.SelectedIndex;
s.RicePlugin.DisableBlender = RiceDisableBlender_CB.Checked;
s.RicePlugin.ForceDepthBuffer = RiceForceDepthBuffer_CB.Checked;
s.RicePlugin.DisableObjBG = RiceDisableObjBG_CB.Checked;
s.RicePlugin.FrameBufferOption = RiceFrameBufferOption_Combo.SelectedIndex;
s.RicePlugin.RenderToTextureOption = RiceRenderToTextureOption_Combo.SelectedIndex;
s.RicePlugin.ScreenUpdateSettingHack = RiceScreenUpdateSettingHack_Combo.SelectedIndex;
s.RicePlugin.EnableHacksForGame = RiceEnableHacksForGame_Combo.SelectedIndex;
ss.RicePlugin.UseCIWidthAndRatio = RiceUseCIWidthAndRatio_Combo.SelectedIndex;
ss.RicePlugin.FullTMEM = RiceFullTMEM_Combo.SelectedIndex;
ss.RicePlugin.TxtSizeMethod2 = RiceTxtSizeMethod2_CB.Checked;
ss.RicePlugin.EnableTxtLOD = RiceEnableTxtLOD_CB.Checked;
ss.RicePlugin.FastTextureCRC = RiceFastTextureCRC_Combo.SelectedIndex;
ss.RicePlugin.EmulateClear = RiceEmulateClear_CB.Checked;
ss.RicePlugin.ForceScreenClear = RiceForceScreenClear_CB.Checked;
ss.RicePlugin.AccurateTextureMappingHack = RiceAccurateTextureMappingHack_Combo.SelectedIndex;
ss.RicePlugin.NormalBlender = RiceNormalBlender_Combo.SelectedIndex;
ss.RicePlugin.DisableBlender = RiceDisableBlender_CB.Checked;
ss.RicePlugin.ForceDepthBuffer = RiceForceDepthBuffer_CB.Checked;
ss.RicePlugin.DisableObjBG = RiceDisableObjBG_CB.Checked;
ss.RicePlugin.FrameBufferOption = RiceFrameBufferOption_Combo.SelectedIndex;
ss.RicePlugin.RenderToTextureOption = RiceRenderToTextureOption_Combo.SelectedIndex;
ss.RicePlugin.ScreenUpdateSettingHack = RiceScreenUpdateSettingHack_Combo.SelectedIndex;
ss.RicePlugin.EnableHacksForGame = RiceEnableHacksForGame_Combo.SelectedIndex;
s.GlidePlugin.autodetect_ucode = Glide_autodetect_ucode.Checked;
s.GlidePlugin.ucode = Glide_ucode.SelectedIndex;
s.GlidePlugin.flame_corona = Glide_flame_corona.Checked;
s.GlidePlugin.card_id = Glide_card_id.SelectedIndex;
s.GlidePlugin.tex_filter = Glide_tex_filter.SelectedIndex;
s.GlidePlugin.wireframe = Glide_wireframe.Checked;
s.GlidePlugin.wfmode = Glide_wfmode.SelectedIndex;
s.GlidePlugin.fast_crc = Glide_fast_crc.Checked;
s.GlidePlugin.filter_cache = Glide_filter_cache.Checked;
s.GlidePlugin.unk_as_red = Glide_unk_as_red.Checked;
s.GlidePlugin.fb_read_always = Glide_fb_read_always.Checked;
s.GlidePlugin.motionblur = Glide_motionblur.Checked;
s.GlidePlugin.fb_render = Glide_fb_render.Checked;
s.GlidePlugin.noditheredalpha = Glide_noditheredalpha.Checked;
s.GlidePlugin.noglsl = Glide_noglsl.Checked;
s.GlidePlugin.fbo = Glide_fbo.Checked;
s.GlidePlugin.disable_auxbuf = Glide_disable_auxbuf.Checked;
s.GlidePlugin.fb_get_info = Glide_fb_get_info.Checked;
ss.GlidePlugin.autodetect_ucode = Glide_autodetect_ucode.Checked;
ss.GlidePlugin.ucode = Glide_ucode.SelectedIndex;
ss.GlidePlugin.flame_corona = Glide_flame_corona.Checked;
ss.GlidePlugin.card_id = Glide_card_id.SelectedIndex;
ss.GlidePlugin.tex_filter = Glide_tex_filter.SelectedIndex;
ss.GlidePlugin.wireframe = Glide_wireframe.Checked;
ss.GlidePlugin.wfmode = Glide_wfmode.SelectedIndex;
ss.GlidePlugin.fast_crc = Glide_fast_crc.Checked;
ss.GlidePlugin.filter_cache = Glide_filter_cache.Checked;
ss.GlidePlugin.unk_as_red = Glide_unk_as_red.Checked;
ss.GlidePlugin.fb_read_always = Glide_fb_read_always.Checked;
ss.GlidePlugin.motionblur = Glide_motionblur.Checked;
ss.GlidePlugin.fb_render = Glide_fb_render.Checked;
ss.GlidePlugin.noditheredalpha = Glide_noditheredalpha.Checked;
ss.GlidePlugin.noglsl = Glide_noglsl.Checked;
ss.GlidePlugin.fbo = Glide_fbo.Checked;
ss.GlidePlugin.disable_auxbuf = Glide_disable_auxbuf.Checked;
ss.GlidePlugin.fb_get_info = Glide_fb_get_info.Checked;
s.GlidePlugin.offset_x =
ss.GlidePlugin.offset_x =
InputValidate.IsSigned(Glide_offset_x.Text) ?
int.Parse(Glide_offset_x.Text) : 0;
s.GlidePlugin.offset_y =
ss.GlidePlugin.offset_y =
InputValidate.IsSigned(Glide_offset_y.Text) ?
int.Parse(Glide_offset_y.Text) : 0;
s.GlidePlugin.scale_x =
ss.GlidePlugin.scale_x =
InputValidate.IsSigned(Glide_scale_x.Text) ?
int.Parse(Glide_scale_x.Text) : 100000;
s.GlidePlugin.scale_y =
ss.GlidePlugin.scale_y =
InputValidate.IsSigned(Glide_scale_y.Text) ?
int.Parse(Glide_scale_y.Text) : 100000;
s.GlidePlugin.UseDefaultHacks = GlideUseDefaultHacks1.Checked || GlideUseDefaultHacks2.Checked;
s.GlidePlugin.alt_tex_size = Glide_alt_tex_size.Checked;
s.GlidePlugin.buff_clear = Glide_buff_clear.Checked;
s.GlidePlugin.decrease_fillrect_edge = Glide_decrease_fillrect_edge.Checked;
s.GlidePlugin.detect_cpu_write = Glide_detect_cpu_write.Checked;
s.GlidePlugin.fb_clear = Glide_fb_clear.Checked;
s.GlidePlugin.fb_hires = Glide_fb_hires.Checked;
s.GlidePlugin.fb_read_alpha = Glide_fb_read_alpha.Checked;
s.GlidePlugin.fb_smart = Glide_fb_smart.Checked;
s.GlidePlugin.fillcolor_fix = Glide_fillcolor_fix.Checked;
s.GlidePlugin.fog = Glide_fog.Checked;
s.GlidePlugin.force_depth_compare = Glide_force_depth_compare.Checked;
s.GlidePlugin.force_microcheck = Glide_force_microcheck.Checked;
s.GlidePlugin.fb_hires_buf_clear = Glide_fb_hires_buf_clear.Checked;
s.GlidePlugin.fb_ignore_aux_copy = Glide_fb_ignore_aux_copy.Checked;
s.GlidePlugin.fb_ignore_previous = Glide_fb_ignore_previous.Checked;
s.GlidePlugin.increase_primdepth = Glide_increase_primdepth.Checked;
s.GlidePlugin.increase_texrect_edge = Glide_increase_texrect_edge.Checked;
s.GlidePlugin.fb_optimize_texrect = Glide_fb_optimize_texrect.Checked;
s.GlidePlugin.fb_optimize_write = Glide_fb_optimize_write.Checked;
s.GlidePlugin.PPL = Glide_PPL.Checked;
s.GlidePlugin.soft_depth_compare = Glide_soft_depth_compare.Checked;
s.GlidePlugin.use_sts1_only = Glide_use_sts1_only.Checked;
s.GlidePlugin.wrap_big_tex = Glide_wrap_big_tex.Checked;
ss.GlidePlugin.UseDefaultHacks = GlideUseDefaultHacks1.Checked || GlideUseDefaultHacks2.Checked;
ss.GlidePlugin.alt_tex_size = Glide_alt_tex_size.Checked;
ss.GlidePlugin.buff_clear = Glide_buff_clear.Checked;
ss.GlidePlugin.decrease_fillrect_edge = Glide_decrease_fillrect_edge.Checked;
ss.GlidePlugin.detect_cpu_write = Glide_detect_cpu_write.Checked;
ss.GlidePlugin.fb_clear = Glide_fb_clear.Checked;
ss.GlidePlugin.fb_hires = Glide_fb_hires.Checked;
ss.GlidePlugin.fb_read_alpha = Glide_fb_read_alpha.Checked;
ss.GlidePlugin.fb_smart = Glide_fb_smart.Checked;
ss.GlidePlugin.fillcolor_fix = Glide_fillcolor_fix.Checked;
ss.GlidePlugin.fog = Glide_fog.Checked;
ss.GlidePlugin.force_depth_compare = Glide_force_depth_compare.Checked;
ss.GlidePlugin.force_microcheck = Glide_force_microcheck.Checked;
ss.GlidePlugin.fb_hires_buf_clear = Glide_fb_hires_buf_clear.Checked;
ss.GlidePlugin.fb_ignore_aux_copy = Glide_fb_ignore_aux_copy.Checked;
ss.GlidePlugin.fb_ignore_previous = Glide_fb_ignore_previous.Checked;
ss.GlidePlugin.increase_primdepth = Glide_increase_primdepth.Checked;
ss.GlidePlugin.increase_texrect_edge = Glide_increase_texrect_edge.Checked;
ss.GlidePlugin.fb_optimize_texrect = Glide_fb_optimize_texrect.Checked;
ss.GlidePlugin.fb_optimize_write = Glide_fb_optimize_write.Checked;
ss.GlidePlugin.PPL = Glide_PPL.Checked;
ss.GlidePlugin.soft_depth_compare = Glide_soft_depth_compare.Checked;
ss.GlidePlugin.use_sts1_only = Glide_use_sts1_only.Checked;
ss.GlidePlugin.wrap_big_tex = Glide_wrap_big_tex.Checked;
s.GlidePlugin.depth_bias =
ss.GlidePlugin.depth_bias =
InputValidate.IsSigned(Glide_depth_bias.Text) ?
int.Parse(Glide_depth_bias.Text) : 20;
s.GlidePlugin.filtering = Glide_filtering.SelectedIndex;
ss.GlidePlugin.filtering = Glide_filtering.SelectedIndex;
s.GlidePlugin.fix_tex_coord = InputValidate.IsSigned(Glide_fix_tex_coord.Text) ?
ss.GlidePlugin.fix_tex_coord = InputValidate.IsSigned(Glide_fix_tex_coord.Text) ?
int.Parse(Glide_fix_tex_coord.Text) : 0;
s.GlidePlugin.lodmode = Glide_lodmode.SelectedIndex;
ss.GlidePlugin.lodmode = Glide_lodmode.SelectedIndex;
s.GlidePlugin.stipple_mode =
ss.GlidePlugin.stipple_mode =
InputValidate.IsSigned(Glide_stipple_mode.Text) ?
int.Parse(Glide_stipple_mode.Text) : 2;
s.GlidePlugin.stipple_pattern =
ss.GlidePlugin.stipple_pattern =
InputValidate.IsSigned(Glide_stipple_pattern.Text) ?
int.Parse(Glide_stipple_pattern.Text) : 1041204192;
s.GlidePlugin.swapmode = Glide_swapmode.SelectedIndex;
s.GlidePlugin.enable_hacks_for_game = Glide_enable_hacks_for_game.SelectedIndex;
ss.GlidePlugin.swapmode = Glide_swapmode.SelectedIndex;
ss.GlidePlugin.enable_hacks_for_game = Glide_enable_hacks_for_game.SelectedIndex;
s.Glide64mk2Plugin.card_id = Glide64mk2_card_id.SelectedIndex;
s.Glide64mk2Plugin.wrpFBO = Glide64mk2_wrpFBO.Checked;
s.Glide64mk2Plugin.wrpAnisotropic = Glide64mk2_wrpAnisotropic.Checked;
s.Glide64mk2Plugin.fb_get_info = Glide64mk2_fb_get_info.Checked;
s.Glide64mk2Plugin.fb_render = Glide64mk2_fb_render.Checked;
ss.Glide64mk2Plugin.card_id = Glide64mk2_card_id.SelectedIndex;
ss.Glide64mk2Plugin.wrpFBO = Glide64mk2_wrpFBO.Checked;
ss.Glide64mk2Plugin.wrpAnisotropic = Glide64mk2_wrpAnisotropic.Checked;
ss.Glide64mk2Plugin.fb_get_info = Glide64mk2_fb_get_info.Checked;
ss.Glide64mk2Plugin.fb_render = Glide64mk2_fb_render.Checked;
s.Glide64mk2Plugin.UseDefaultHacks = Glide64mk2_UseDefaultHacks1.Checked || Glide64mk2_UseDefaultHacks2.Checked;
ss.Glide64mk2Plugin.UseDefaultHacks = Glide64mk2_UseDefaultHacks1.Checked || Glide64mk2_UseDefaultHacks2.Checked;
s.Glide64mk2Plugin.use_sts1_only = Glide64mk2_use_sts1_only.Checked;
s.Glide64mk2Plugin.optimize_texrect = Glide64mk2_optimize_texrect.Checked;
s.Glide64mk2Plugin.increase_texrect_edge = Glide64mk2_increase_texrect_edge.Checked;
s.Glide64mk2Plugin.ignore_aux_copy = Glide64mk2_ignore_aux_copy.Checked;
s.Glide64mk2Plugin.hires_buf_clear = Glide64mk2_hires_buf_clear.Checked;
s.Glide64mk2Plugin.force_microcheck = Glide64mk2_force_microcheck.Checked;
s.Glide64mk2Plugin.fog = Glide64mk2_fog.Checked;
s.Glide64mk2Plugin.fb_smart = Glide64mk2_fb_smart.Checked;
s.Glide64mk2Plugin.fb_read_alpha = Glide64mk2_fb_read_alpha.Checked;
s.Glide64mk2Plugin.fb_hires = Glide64mk2_fb_hires.Checked;
s.Glide64mk2Plugin.detect_cpu_write = Glide64mk2_detect_cpu_write.Checked;
s.Glide64mk2Plugin.decrease_fillrect_edge = Glide64mk2_decrease_fillrect_edge.Checked;
s.Glide64mk2Plugin.buff_clear = Glide64mk2_buff_clear.Checked;
s.Glide64mk2Plugin.alt_tex_size = Glide64mk2_alt_tex_size.Checked;
s.Glide64mk2Plugin.swapmode = Glide64mk2_swapmode.SelectedIndex;
ss.Glide64mk2Plugin.use_sts1_only = Glide64mk2_use_sts1_only.Checked;
ss.Glide64mk2Plugin.optimize_texrect = Glide64mk2_optimize_texrect.Checked;
ss.Glide64mk2Plugin.increase_texrect_edge = Glide64mk2_increase_texrect_edge.Checked;
ss.Glide64mk2Plugin.ignore_aux_copy = Glide64mk2_ignore_aux_copy.Checked;
ss.Glide64mk2Plugin.hires_buf_clear = Glide64mk2_hires_buf_clear.Checked;
ss.Glide64mk2Plugin.force_microcheck = Glide64mk2_force_microcheck.Checked;
ss.Glide64mk2Plugin.fog = Glide64mk2_fog.Checked;
ss.Glide64mk2Plugin.fb_smart = Glide64mk2_fb_smart.Checked;
ss.Glide64mk2Plugin.fb_read_alpha = Glide64mk2_fb_read_alpha.Checked;
ss.Glide64mk2Plugin.fb_hires = Glide64mk2_fb_hires.Checked;
ss.Glide64mk2Plugin.detect_cpu_write = Glide64mk2_detect_cpu_write.Checked;
ss.Glide64mk2Plugin.decrease_fillrect_edge = Glide64mk2_decrease_fillrect_edge.Checked;
ss.Glide64mk2Plugin.buff_clear = Glide64mk2_buff_clear.Checked;
ss.Glide64mk2Plugin.alt_tex_size = Glide64mk2_alt_tex_size.Checked;
ss.Glide64mk2Plugin.swapmode = Glide64mk2_swapmode.SelectedIndex;
s.Glide64mk2Plugin.stipple_pattern =
ss.Glide64mk2Plugin.stipple_pattern =
InputValidate.IsSigned(Glide64mk2_stipple_pattern.Text) ?
int.Parse(Glide64mk2_stipple_pattern.Text) : 1041204192;
s.Glide64mk2Plugin.stipple_mode =
ss.Glide64mk2Plugin.stipple_mode =
InputValidate.IsSigned(Glide64mk2_stipple_mode.Text) ?
int.Parse(Glide64mk2_stipple_mode.Text) : 2;
s.Glide64mk2Plugin.lodmode = Glide64mk2_lodmode.SelectedIndex;
s.Glide64mk2Plugin.filtering = Glide64mk2_filtering.SelectedIndex;
s.Glide64mk2Plugin.correct_viewport = Glide64mk2_correct_viewport.Checked;
s.Glide64mk2Plugin.force_calc_sphere = Glide64mk2_force_calc_sphere.Checked;
s.Glide64mk2Plugin.pal230 = Glide64mk2_pal230.Checked;
s.Glide64mk2Plugin.texture_correction = Glide64mk2_texture_correction.Checked;
s.Glide64mk2Plugin.n64_z_scale = Glide64mk2_n64_z_scale.Checked;
s.Glide64mk2Plugin.old_style_adither = Glide64mk2_old_style_adither.Checked;
s.Glide64mk2Plugin.zmode_compare_less = Glide64mk2_zmode_compare_less.Checked;
s.Glide64mk2Plugin.adjust_aspect = Glide64mk2_adjust_aspect.Checked;
s.Glide64mk2Plugin.clip_zmax = Glide64mk2_clip_zmax.Checked;
s.Glide64mk2Plugin.clip_zmin = Glide64mk2_clip_zmin.Checked;
s.Glide64mk2Plugin.force_quad3d = Glide64mk2_force_quad3d.Checked;
s.Glide64mk2Plugin.useless_is_useless = Glide64mk2_useless_is_useless.Checked;
s.Glide64mk2Plugin.fb_read_always = Glide64mk2_fb_read_always.Checked;
s.Glide64mk2Plugin.aspectmode = Glide64mk2_aspectmode.SelectedIndex;
s.Glide64mk2Plugin.fb_crc_mode = Glide64mk2_fb_crc_mode.SelectedIndex;
s.Glide64mk2Plugin.enable_hacks_for_game = Glide64mk2_enable_hacks_for_game.SelectedIndex;
s.Glide64mk2Plugin.read_back_to_screen = Glide64mk2_read_back_to_screen.SelectedIndex;
s.Glide64mk2Plugin.fast_crc = Glide64mk2_fast_crc.Checked;
ss.Glide64mk2Plugin.lodmode = Glide64mk2_lodmode.SelectedIndex;
ss.Glide64mk2Plugin.filtering = Glide64mk2_filtering.SelectedIndex;
ss.Glide64mk2Plugin.correct_viewport = Glide64mk2_correct_viewport.Checked;
ss.Glide64mk2Plugin.force_calc_sphere = Glide64mk2_force_calc_sphere.Checked;
ss.Glide64mk2Plugin.pal230 = Glide64mk2_pal230.Checked;
ss.Glide64mk2Plugin.texture_correction = Glide64mk2_texture_correction.Checked;
ss.Glide64mk2Plugin.n64_z_scale = Glide64mk2_n64_z_scale.Checked;
ss.Glide64mk2Plugin.old_style_adither = Glide64mk2_old_style_adither.Checked;
ss.Glide64mk2Plugin.zmode_compare_less = Glide64mk2_zmode_compare_less.Checked;
ss.Glide64mk2Plugin.adjust_aspect = Glide64mk2_adjust_aspect.Checked;
ss.Glide64mk2Plugin.clip_zmax = Glide64mk2_clip_zmax.Checked;
ss.Glide64mk2Plugin.clip_zmin = Glide64mk2_clip_zmin.Checked;
ss.Glide64mk2Plugin.force_quad3d = Glide64mk2_force_quad3d.Checked;
ss.Glide64mk2Plugin.useless_is_useless = Glide64mk2_useless_is_useless.Checked;
ss.Glide64mk2Plugin.fb_read_always = Glide64mk2_fb_read_always.Checked;
ss.Glide64mk2Plugin.aspectmode = Glide64mk2_aspectmode.SelectedIndex;
ss.Glide64mk2Plugin.fb_crc_mode = Glide64mk2_fb_crc_mode.SelectedIndex;
ss.Glide64mk2Plugin.enable_hacks_for_game = Glide64mk2_enable_hacks_for_game.SelectedIndex;
ss.Glide64mk2Plugin.read_back_to_screen = Glide64mk2_read_back_to_screen.SelectedIndex;
ss.Glide64mk2Plugin.fast_crc = Glide64mk2_fast_crc.Checked;
s.CoreType = EnumHelper.GetValueFromDescription<N64SyncSettings.CORETYPE>(
ss.CoreType = EnumHelper.GetValueFromDescription<N64SyncSettings.CORETYPE>(
CoreTypeDropdown.SelectedItem.ToString());
s.RspType = EnumHelper.GetValueFromDescription<N64SyncSettings.RSPTYPE>(
ss.RspType = EnumHelper.GetValueFromDescription<N64SyncSettings.RSPTYPE>(
RspTypeDropdown.SelectedItem.ToString());
PutS(s);
PutSettings(s);
PutSyncSettings(ss);
}
private void N64VideoPluginconfig_Load(object sender, EventArgs e)
{
var s = GetS();
var s = GetSettings();
var ss = GetSyncSettings();
CoreTypeDropdown.PopulateFromEnum<N64SyncSettings.CORETYPE>(s.CoreType);
RspTypeDropdown.PopulateFromEnum<N64SyncSettings.RSPTYPE>(s.RspType);
CoreTypeDropdown.PopulateFromEnum<N64SyncSettings.CORETYPE>(ss.CoreType);
RspTypeDropdown.PopulateFromEnum<N64SyncSettings.RSPTYPE>(ss.RspType);
//Load Variables
//Global
@ -324,7 +349,7 @@ namespace BizHawk.Client.EmuHawk
{
VideoResolutionComboBox.SelectedIndex = index;
}
switch (s.VidPlugin)
switch (ss.VidPlugin)
{
case PLUGINTYPE.GLIDE64MK2: PluginComboBox.Text = "Glide64mk2"; break;
case PLUGINTYPE.GLIDE: PluginComboBox.Text = "Glide64"; break;
@ -332,38 +357,38 @@ namespace BizHawk.Client.EmuHawk
}
//Rice
RiceNormalAlphaBlender_CB.Checked = s.RicePlugin.NormalAlphaBlender;
RiceFastTextureLoading_CB.Checked = s.RicePlugin.FastTextureLoading;
RiceAccurateTextureMapping_CB.Checked = s.RicePlugin.AccurateTextureMapping;
RiceInN64Resolution_CB.Checked = s.RicePlugin.InN64Resolution;
RiceSaveVRAM_CB.Checked = s.RicePlugin.SaveVRAM;
RiceDoubleSizeForSmallTxtrBuf_CB.Checked = s.RicePlugin.DoubleSizeForSmallTxtrBuf;
RiceDefaultCombinerDisable_CB.Checked = s.RicePlugin.DefaultCombinerDisable;
RiceEnableHacks_CB.Checked = s.RicePlugin.EnableHacks;
RiceWinFrameMode_CB.Checked = s.RicePlugin.WinFrameMode;
RiceFullTMEMEmulation_CB.Checked = s.RicePlugin.FullTMEMEmulation;
RiceOpenGLVertexClipper_CB.Checked = s.RicePlugin.OpenGLVertexClipper;
RiceEnableSSE_CB.Checked = s.RicePlugin.EnableSSE;
RiceEnableVertexShader_CB.Checked = s.RicePlugin.EnableVertexShader;
RiceSkipFrame_CB.Checked = s.RicePlugin.SkipFrame;
RiceTexRectOnly_CB.Checked = s.RicePlugin.TexRectOnly;
RiceSmallTextureOnly_CB.Checked = s.RicePlugin.SmallTextureOnly;
RiceLoadHiResCRCOnly_CB.Checked = s.RicePlugin.LoadHiResCRCOnly;
RiceLoadHiResTextures_CB.Checked = s.RicePlugin.LoadHiResTextures;
RiceDumpTexturesToFiles_CB.Checked = s.RicePlugin.DumpTexturesToFiles;
RiceNormalAlphaBlender_CB.Checked = ss.RicePlugin.NormalAlphaBlender;
RiceFastTextureLoading_CB.Checked = ss.RicePlugin.FastTextureLoading;
RiceAccurateTextureMapping_CB.Checked = ss.RicePlugin.AccurateTextureMapping;
RiceInN64Resolution_CB.Checked = ss.RicePlugin.InN64Resolution;
RiceSaveVRAM_CB.Checked = ss.RicePlugin.SaveVRAM;
RiceDoubleSizeForSmallTxtrBuf_CB.Checked = ss.RicePlugin.DoubleSizeForSmallTxtrBuf;
RiceDefaultCombinerDisable_CB.Checked = ss.RicePlugin.DefaultCombinerDisable;
RiceEnableHacks_CB.Checked = ss.RicePlugin.EnableHacks;
RiceWinFrameMode_CB.Checked = ss.RicePlugin.WinFrameMode;
RiceFullTMEMEmulation_CB.Checked = ss.RicePlugin.FullTMEMEmulation;
RiceOpenGLVertexClipper_CB.Checked = ss.RicePlugin.OpenGLVertexClipper;
RiceEnableSSE_CB.Checked = ss.RicePlugin.EnableSSE;
RiceEnableVertexShader_CB.Checked = ss.RicePlugin.EnableVertexShader;
RiceSkipFrame_CB.Checked = ss.RicePlugin.SkipFrame;
RiceTexRectOnly_CB.Checked = ss.RicePlugin.TexRectOnly;
RiceSmallTextureOnly_CB.Checked = ss.RicePlugin.SmallTextureOnly;
RiceLoadHiResCRCOnly_CB.Checked = ss.RicePlugin.LoadHiResCRCOnly;
RiceLoadHiResTextures_CB.Checked = ss.RicePlugin.LoadHiResTextures;
RiceDumpTexturesToFiles_CB.Checked = ss.RicePlugin.DumpTexturesToFiles;
RiceFrameBufferSetting_Combo.SelectedIndex = s.RicePlugin.FrameBufferSetting;
RiceFrameBufferWriteBackControl_Combo.SelectedIndex = s.RicePlugin.FrameBufferWriteBackControl;
RiceRenderToTexture_Combo.SelectedIndex = s.RicePlugin.RenderToTexture;
RiceScreenUpdateSetting_Combo.SelectedIndex = s.RicePlugin.ScreenUpdateSetting;
RiceMipmapping_Combo.SelectedIndex = s.RicePlugin.Mipmapping;
RiceFogMethod_Combo.SelectedIndex = s.RicePlugin.FogMethod;
RiceForceTextureFilter_Combo.SelectedIndex = s.RicePlugin.ForceTextureFilter;
RiceTextureEnhancement_Combo.SelectedIndex = s.RicePlugin.TextureEnhancement;
RiceTextureEnhancementControl_Combo.SelectedIndex = s.RicePlugin.TextureEnhancementControl;
RiceTextureQuality_Combo.SelectedIndex = s.RicePlugin.TextureQuality;
RiceOpenGLDepthBufferSetting_Combo.SelectedIndex = (s.RicePlugin.OpenGLDepthBufferSetting / 16) - 1;
switch (s.RicePlugin.MultiSampling)
RiceFrameBufferSetting_Combo.SelectedIndex = ss.RicePlugin.FrameBufferSetting;
RiceFrameBufferWriteBackControl_Combo.SelectedIndex = ss.RicePlugin.FrameBufferWriteBackControl;
RiceRenderToTexture_Combo.SelectedIndex = ss.RicePlugin.RenderToTexture;
RiceScreenUpdateSetting_Combo.SelectedIndex = ss.RicePlugin.ScreenUpdateSetting;
RiceMipmapping_Combo.SelectedIndex = ss.RicePlugin.Mipmapping;
RiceFogMethod_Combo.SelectedIndex = ss.RicePlugin.FogMethod;
RiceForceTextureFilter_Combo.SelectedIndex = ss.RicePlugin.ForceTextureFilter;
RiceTextureEnhancement_Combo.SelectedIndex = ss.RicePlugin.TextureEnhancement;
RiceTextureEnhancementControl_Combo.SelectedIndex = ss.RicePlugin.TextureEnhancementControl;
RiceTextureQuality_Combo.SelectedIndex = ss.RicePlugin.TextureQuality;
RiceOpenGLDepthBufferSetting_Combo.SelectedIndex = (ss.RicePlugin.OpenGLDepthBufferSetting / 16) - 1;
switch (ss.RicePlugin.MultiSampling)
{
case 0: RiceMultiSampling_Combo.SelectedIndex = 0; break;
case 2: RiceMultiSampling_Combo.SelectedIndex = 1; break;
@ -372,160 +397,160 @@ namespace BizHawk.Client.EmuHawk
case 16: RiceMultiSampling_Combo.SelectedIndex = 4; break;
default: RiceMultiSampling_Combo.SelectedIndex = 0; break;
}
RiceColorQuality_Combo.SelectedIndex = s.RicePlugin.ColorQuality;
RiceOpenGLRenderSetting_Combo.SelectedIndex = s.RicePlugin.OpenGLRenderSetting;
RiceAnisotropicFiltering_TB.Value = s.RicePlugin.AnisotropicFiltering;
RiceColorQuality_Combo.SelectedIndex = ss.RicePlugin.ColorQuality;
RiceOpenGLRenderSetting_Combo.SelectedIndex = ss.RicePlugin.OpenGLRenderSetting;
RiceAnisotropicFiltering_TB.Value = ss.RicePlugin.AnisotropicFiltering;
AnisotropicFiltering_LB.Text = "Anisotropic Filtering: " + RiceAnisotropicFiltering_TB.Value;
RiceUseDefaultHacks_CB.Checked = s.RicePlugin.UseDefaultHacks;
RiceUseDefaultHacks_CB.Checked = ss.RicePlugin.UseDefaultHacks;
UpdateRiceHacksSection();
if (!s.RicePlugin.UseDefaultHacks)
if (!ss.RicePlugin.UseDefaultHacks)
{
RiceTexture1Hack_CB.Checked = s.RicePlugin.Texture1Hack;
RiceTexture1Hack_CB.Checked = ss.RicePlugin.Texture1Hack;
RiceDisableTextureCRC_CB.Checked = s.RicePlugin.DisableTextureCRC;
RiceDisableCulling_CB.Checked = s.RicePlugin.DisableCulling;
RiceIncTexRectEdge_CB.Checked = s.RicePlugin.IncTexRectEdge;
RiceZHack_CB.Checked = s.RicePlugin.ZHack;
RiceTextureScaleHack_CB.Checked = s.RicePlugin.TextureScaleHack;
RicePrimaryDepthHack_CB.Checked = s.RicePlugin.PrimaryDepthHack;
RiceTexture1Hack_CB.Checked = s.RicePlugin.Texture1Hack;
RiceFastLoadTile_CB.Checked = s.RicePlugin.FastLoadTile;
RiceUseSmallerTexture_CB.Checked = s.RicePlugin.UseSmallerTexture;
RiceVIWidth_Text.Text = s.RicePlugin.VIWidth.ToString();
RiceVIHeight_Text.Text = s.RicePlugin.VIHeight.ToString();
RiceUseCIWidthAndRatio_Combo.SelectedIndex = s.RicePlugin.UseCIWidthAndRatio;
RiceFullTMEM_Combo.SelectedIndex = s.RicePlugin.FullTMEM;
RiceTxtSizeMethod2_CB.Checked = s.RicePlugin.TxtSizeMethod2;
RiceEnableTxtLOD_CB.Checked = s.RicePlugin.EnableTxtLOD;
RiceFastTextureCRC_Combo.SelectedIndex = s.RicePlugin.FastTextureCRC;
RiceEmulateClear_CB.Checked = s.RicePlugin.EmulateClear;
RiceForceScreenClear_CB.Checked = s.RicePlugin.ForceScreenClear;
RiceAccurateTextureMappingHack_Combo.SelectedIndex = s.RicePlugin.AccurateTextureMappingHack;
RiceNormalBlender_Combo.SelectedIndex = s.RicePlugin.NormalBlender;
RiceDisableBlender_CB.Checked = s.RicePlugin.DisableBlender;
RiceForceDepthBuffer_CB.Checked = s.RicePlugin.ForceDepthBuffer;
RiceDisableObjBG_CB.Checked = s.RicePlugin.DisableObjBG;
RiceFrameBufferOption_Combo.SelectedIndex = s.RicePlugin.FrameBufferOption;
RiceRenderToTextureOption_Combo.SelectedIndex = s.RicePlugin.RenderToTextureOption;
RiceScreenUpdateSettingHack_Combo.SelectedIndex = s.RicePlugin.ScreenUpdateSettingHack;
RiceEnableHacksForGame_Combo.SelectedIndex = s.RicePlugin.EnableHacksForGame;
RiceDisableTextureCRC_CB.Checked = ss.RicePlugin.DisableTextureCRC;
RiceDisableCulling_CB.Checked = ss.RicePlugin.DisableCulling;
RiceIncTexRectEdge_CB.Checked = ss.RicePlugin.IncTexRectEdge;
RiceZHack_CB.Checked = ss.RicePlugin.ZHack;
RiceTextureScaleHack_CB.Checked = ss.RicePlugin.TextureScaleHack;
RicePrimaryDepthHack_CB.Checked = ss.RicePlugin.PrimaryDepthHack;
RiceTexture1Hack_CB.Checked = ss.RicePlugin.Texture1Hack;
RiceFastLoadTile_CB.Checked = ss.RicePlugin.FastLoadTile;
RiceUseSmallerTexture_CB.Checked = ss.RicePlugin.UseSmallerTexture;
RiceVIWidth_Text.Text = ss.RicePlugin.VIWidth.ToString();
RiceVIHeight_Text.Text = ss.RicePlugin.VIHeight.ToString();
RiceUseCIWidthAndRatio_Combo.SelectedIndex = ss.RicePlugin.UseCIWidthAndRatio;
RiceFullTMEM_Combo.SelectedIndex = ss.RicePlugin.FullTMEM;
RiceTxtSizeMethod2_CB.Checked = ss.RicePlugin.TxtSizeMethod2;
RiceEnableTxtLOD_CB.Checked = ss.RicePlugin.EnableTxtLOD;
RiceFastTextureCRC_Combo.SelectedIndex = ss.RicePlugin.FastTextureCRC;
RiceEmulateClear_CB.Checked = ss.RicePlugin.EmulateClear;
RiceForceScreenClear_CB.Checked = ss.RicePlugin.ForceScreenClear;
RiceAccurateTextureMappingHack_Combo.SelectedIndex = ss.RicePlugin.AccurateTextureMappingHack;
RiceNormalBlender_Combo.SelectedIndex = ss.RicePlugin.NormalBlender;
RiceDisableBlender_CB.Checked = ss.RicePlugin.DisableBlender;
RiceForceDepthBuffer_CB.Checked = ss.RicePlugin.ForceDepthBuffer;
RiceDisableObjBG_CB.Checked = ss.RicePlugin.DisableObjBG;
RiceFrameBufferOption_Combo.SelectedIndex = ss.RicePlugin.FrameBufferOption;
RiceRenderToTextureOption_Combo.SelectedIndex = ss.RicePlugin.RenderToTextureOption;
RiceScreenUpdateSettingHack_Combo.SelectedIndex = ss.RicePlugin.ScreenUpdateSettingHack;
RiceEnableHacksForGame_Combo.SelectedIndex = ss.RicePlugin.EnableHacksForGame;
}
Glide_autodetect_ucode.Checked = s.GlidePlugin.autodetect_ucode;
Glide_ucode.SelectedIndex = s.GlidePlugin.ucode;
Glide_flame_corona.Checked = s.GlidePlugin.flame_corona;
Glide_card_id.SelectedIndex = s.GlidePlugin.card_id;
Glide_tex_filter.SelectedIndex = s.GlidePlugin.tex_filter;
Glide_wireframe.Checked = s.GlidePlugin.wireframe;
Glide_wfmode.SelectedIndex = s.GlidePlugin.wfmode;
Glide_fast_crc.Checked = s.GlidePlugin.fast_crc;
Glide_filter_cache.Checked = s.GlidePlugin.filter_cache;
Glide_unk_as_red.Checked = s.GlidePlugin.unk_as_red;
Glide_fb_read_always.Checked = s.GlidePlugin.fb_read_always;
Glide_motionblur.Checked = s.GlidePlugin.motionblur;
Glide_fb_render.Checked = s.GlidePlugin.fb_render;
Glide_noditheredalpha.Checked = s.GlidePlugin.noditheredalpha;
Glide_noglsl.Checked = s.GlidePlugin.noglsl;
Glide_fbo.Checked = s.GlidePlugin.fbo;
Glide_disable_auxbuf.Checked = s.GlidePlugin.disable_auxbuf;
Glide_fb_get_info.Checked = s.GlidePlugin.fb_get_info;
Glide_offset_x.Text = s.GlidePlugin.offset_x.ToString();
Glide_offset_y.Text = s.GlidePlugin.offset_y.ToString();
Glide_scale_x.Text = s.GlidePlugin.scale_x.ToString();
Glide_scale_y.Text = s.GlidePlugin.scale_y.ToString();
Glide_autodetect_ucode.Checked = ss.GlidePlugin.autodetect_ucode;
Glide_ucode.SelectedIndex = ss.GlidePlugin.ucode;
Glide_flame_corona.Checked = ss.GlidePlugin.flame_corona;
Glide_card_id.SelectedIndex = ss.GlidePlugin.card_id;
Glide_tex_filter.SelectedIndex = ss.GlidePlugin.tex_filter;
Glide_wireframe.Checked = ss.GlidePlugin.wireframe;
Glide_wfmode.SelectedIndex = ss.GlidePlugin.wfmode;
Glide_fast_crc.Checked = ss.GlidePlugin.fast_crc;
Glide_filter_cache.Checked = ss.GlidePlugin.filter_cache;
Glide_unk_as_red.Checked = ss.GlidePlugin.unk_as_red;
Glide_fb_read_always.Checked = ss.GlidePlugin.fb_read_always;
Glide_motionblur.Checked = ss.GlidePlugin.motionblur;
Glide_fb_render.Checked = ss.GlidePlugin.fb_render;
Glide_noditheredalpha.Checked = ss.GlidePlugin.noditheredalpha;
Glide_noglsl.Checked = ss.GlidePlugin.noglsl;
Glide_fbo.Checked = ss.GlidePlugin.fbo;
Glide_disable_auxbuf.Checked = ss.GlidePlugin.disable_auxbuf;
Glide_fb_get_info.Checked = ss.GlidePlugin.fb_get_info;
Glide_offset_x.Text = ss.GlidePlugin.offset_x.ToString();
Glide_offset_y.Text = ss.GlidePlugin.offset_y.ToString();
Glide_scale_x.Text = ss.GlidePlugin.scale_x.ToString();
Glide_scale_y.Text = ss.GlidePlugin.scale_y.ToString();
GlideUseDefaultHacks1.Checked = s.GlidePlugin.UseDefaultHacks;
GlideUseDefaultHacks2.Checked = s.GlidePlugin.UseDefaultHacks;
GlideUseDefaultHacks1.Checked = ss.GlidePlugin.UseDefaultHacks;
GlideUseDefaultHacks2.Checked = ss.GlidePlugin.UseDefaultHacks;
UpdateGlideHacksSection();
if (!s.GlidePlugin.UseDefaultHacks)
if (!ss.GlidePlugin.UseDefaultHacks)
{
Glide_alt_tex_size.Checked = s.GlidePlugin.alt_tex_size;
Glide_buff_clear.Checked = s.GlidePlugin.buff_clear;
Glide_decrease_fillrect_edge.Checked = s.GlidePlugin.decrease_fillrect_edge;
Glide_detect_cpu_write.Checked = s.GlidePlugin.detect_cpu_write;
Glide_fb_clear.Checked = s.GlidePlugin.fb_clear;
Glide_fb_hires.Checked = s.GlidePlugin.fb_hires;
Glide_fb_read_alpha.Checked = s.GlidePlugin.fb_read_alpha;
Glide_fb_smart.Checked = s.GlidePlugin.fb_smart;
Glide_fillcolor_fix.Checked = s.GlidePlugin.fillcolor_fix;
Glide_fog.Checked = s.GlidePlugin.fog;
Glide_force_depth_compare.Checked = s.GlidePlugin.force_depth_compare;
Glide_force_microcheck.Checked = s.GlidePlugin.force_microcheck;
Glide_fb_hires_buf_clear.Checked = s.GlidePlugin.fb_hires_buf_clear;
Glide_fb_ignore_aux_copy.Checked = s.GlidePlugin.fb_ignore_aux_copy;
Glide_fb_ignore_previous.Checked = s.GlidePlugin.fb_ignore_previous;
Glide_increase_primdepth.Checked = s.GlidePlugin.increase_primdepth;
Glide_increase_texrect_edge.Checked = s.GlidePlugin.increase_texrect_edge;
Glide_fb_optimize_texrect.Checked = s.GlidePlugin.fb_optimize_texrect;
Glide_fb_optimize_write.Checked = s.GlidePlugin.fb_optimize_write;
Glide_PPL.Checked = s.GlidePlugin.PPL;
Glide_soft_depth_compare.Checked = s.GlidePlugin.soft_depth_compare;
Glide_use_sts1_only.Checked = s.GlidePlugin.use_sts1_only;
Glide_wrap_big_tex.Checked = s.GlidePlugin.wrap_big_tex;
Glide_alt_tex_size.Checked = ss.GlidePlugin.alt_tex_size;
Glide_buff_clear.Checked = ss.GlidePlugin.buff_clear;
Glide_decrease_fillrect_edge.Checked = ss.GlidePlugin.decrease_fillrect_edge;
Glide_detect_cpu_write.Checked = ss.GlidePlugin.detect_cpu_write;
Glide_fb_clear.Checked = ss.GlidePlugin.fb_clear;
Glide_fb_hires.Checked = ss.GlidePlugin.fb_hires;
Glide_fb_read_alpha.Checked = ss.GlidePlugin.fb_read_alpha;
Glide_fb_smart.Checked = ss.GlidePlugin.fb_smart;
Glide_fillcolor_fix.Checked = ss.GlidePlugin.fillcolor_fix;
Glide_fog.Checked = ss.GlidePlugin.fog;
Glide_force_depth_compare.Checked = ss.GlidePlugin.force_depth_compare;
Glide_force_microcheck.Checked = ss.GlidePlugin.force_microcheck;
Glide_fb_hires_buf_clear.Checked = ss.GlidePlugin.fb_hires_buf_clear;
Glide_fb_ignore_aux_copy.Checked = ss.GlidePlugin.fb_ignore_aux_copy;
Glide_fb_ignore_previous.Checked = ss.GlidePlugin.fb_ignore_previous;
Glide_increase_primdepth.Checked = ss.GlidePlugin.increase_primdepth;
Glide_increase_texrect_edge.Checked = ss.GlidePlugin.increase_texrect_edge;
Glide_fb_optimize_texrect.Checked = ss.GlidePlugin.fb_optimize_texrect;
Glide_fb_optimize_write.Checked = ss.GlidePlugin.fb_optimize_write;
Glide_PPL.Checked = ss.GlidePlugin.PPL;
Glide_soft_depth_compare.Checked = ss.GlidePlugin.soft_depth_compare;
Glide_use_sts1_only.Checked = ss.GlidePlugin.use_sts1_only;
Glide_wrap_big_tex.Checked = ss.GlidePlugin.wrap_big_tex;
Glide_depth_bias.Text = s.GlidePlugin.depth_bias.ToString();
Glide_filtering.SelectedIndex = s.GlidePlugin.filtering;
Glide_fix_tex_coord.Text = s.GlidePlugin.fix_tex_coord.ToString();
Glide_lodmode.SelectedIndex = s.GlidePlugin.lodmode;
Glide_stipple_mode.Text = s.GlidePlugin.stipple_mode.ToString();
Glide_stipple_pattern.Text = s.GlidePlugin.stipple_pattern.ToString();
Glide_swapmode.SelectedIndex = s.GlidePlugin.swapmode;
Glide_enable_hacks_for_game.SelectedIndex = s.GlidePlugin.enable_hacks_for_game;
Glide_depth_bias.Text = ss.GlidePlugin.depth_bias.ToString();
Glide_filtering.SelectedIndex = ss.GlidePlugin.filtering;
Glide_fix_tex_coord.Text = ss.GlidePlugin.fix_tex_coord.ToString();
Glide_lodmode.SelectedIndex = ss.GlidePlugin.lodmode;
Glide_stipple_mode.Text = ss.GlidePlugin.stipple_mode.ToString();
Glide_stipple_pattern.Text = ss.GlidePlugin.stipple_pattern.ToString();
Glide_swapmode.SelectedIndex = ss.GlidePlugin.swapmode;
Glide_enable_hacks_for_game.SelectedIndex = ss.GlidePlugin.enable_hacks_for_game;
}
Glide64mk2_card_id.SelectedIndex = s.Glide64mk2Plugin.card_id;
Glide64mk2_wrpFBO.Checked = s.Glide64mk2Plugin.wrpFBO;
Glide64mk2_wrpAnisotropic.Checked = s.Glide64mk2Plugin.wrpAnisotropic;
Glide64mk2_fb_get_info.Checked = s.Glide64mk2Plugin.fb_get_info;
Glide64mk2_fb_render.Checked = s.Glide64mk2Plugin.fb_render;
Glide64mk2_card_id.SelectedIndex = ss.Glide64mk2Plugin.card_id;
Glide64mk2_wrpFBO.Checked = ss.Glide64mk2Plugin.wrpFBO;
Glide64mk2_wrpAnisotropic.Checked = ss.Glide64mk2Plugin.wrpAnisotropic;
Glide64mk2_fb_get_info.Checked = ss.Glide64mk2Plugin.fb_get_info;
Glide64mk2_fb_render.Checked = ss.Glide64mk2Plugin.fb_render;
Glide64mk2_UseDefaultHacks1.Checked = s.Glide64mk2Plugin.UseDefaultHacks;
Glide64mk2_UseDefaultHacks2.Checked = s.Glide64mk2Plugin.UseDefaultHacks;
Glide64mk2_UseDefaultHacks1.Checked = ss.Glide64mk2Plugin.UseDefaultHacks;
Glide64mk2_UseDefaultHacks2.Checked = ss.Glide64mk2Plugin.UseDefaultHacks;
UpdateGlide64mk2HacksSection();
if (!s.Glide64mk2Plugin.UseDefaultHacks)
if (!ss.Glide64mk2Plugin.UseDefaultHacks)
{
Glide64mk2_use_sts1_only.Checked = s.Glide64mk2Plugin.use_sts1_only;
Glide64mk2_optimize_texrect.Checked = s.Glide64mk2Plugin.optimize_texrect;
Glide64mk2_increase_texrect_edge.Checked = s.Glide64mk2Plugin.increase_texrect_edge;
Glide64mk2_ignore_aux_copy.Checked = s.Glide64mk2Plugin.ignore_aux_copy;
Glide64mk2_hires_buf_clear.Checked = s.Glide64mk2Plugin.hires_buf_clear;
Glide64mk2_force_microcheck.Checked = s.Glide64mk2Plugin.force_microcheck;
Glide64mk2_fog.Checked = s.Glide64mk2Plugin.fog;
Glide64mk2_fb_smart.Checked = s.Glide64mk2Plugin.fb_smart;
Glide64mk2_fb_read_alpha.Checked = s.Glide64mk2Plugin.fb_read_alpha;
Glide64mk2_fb_hires.Checked = s.Glide64mk2Plugin.fb_hires;
Glide64mk2_detect_cpu_write.Checked = s.Glide64mk2Plugin.detect_cpu_write;
Glide64mk2_decrease_fillrect_edge.Checked = s.Glide64mk2Plugin.decrease_fillrect_edge;
Glide64mk2_buff_clear.Checked = s.Glide64mk2Plugin.buff_clear;
Glide64mk2_alt_tex_size.Checked = s.Glide64mk2Plugin.alt_tex_size;
Glide64mk2_swapmode.SelectedIndex = s.Glide64mk2Plugin.swapmode;
Glide64mk2_stipple_pattern.Text = s.Glide64mk2Plugin.stipple_pattern.ToString();
Glide64mk2_stipple_mode.Text = s.Glide64mk2Plugin.stipple_mode.ToString();
Glide64mk2_lodmode.SelectedIndex = s.Glide64mk2Plugin.lodmode;
Glide64mk2_filtering.SelectedIndex = s.Glide64mk2Plugin.filtering;
Glide64mk2_correct_viewport.Checked = s.Glide64mk2Plugin.correct_viewport;
Glide64mk2_force_calc_sphere.Checked = s.Glide64mk2Plugin.force_calc_sphere;
Glide64mk2_pal230.Checked = s.Glide64mk2Plugin.pal230;
Glide64mk2_texture_correction.Checked = s.Glide64mk2Plugin.texture_correction;
Glide64mk2_n64_z_scale.Checked = s.Glide64mk2Plugin.n64_z_scale;
Glide64mk2_old_style_adither.Checked = s.Glide64mk2Plugin.old_style_adither;
Glide64mk2_zmode_compare_less.Checked = s.Glide64mk2Plugin.zmode_compare_less;
Glide64mk2_adjust_aspect.Checked = s.Glide64mk2Plugin.adjust_aspect;
Glide64mk2_clip_zmax.Checked = s.Glide64mk2Plugin.clip_zmax;
Glide64mk2_clip_zmin.Checked = s.Glide64mk2Plugin.clip_zmin;
Glide64mk2_force_quad3d.Checked = s.Glide64mk2Plugin.force_quad3d;
Glide64mk2_useless_is_useless.Checked = s.Glide64mk2Plugin.useless_is_useless;
Glide64mk2_fb_read_always.Checked = s.Glide64mk2Plugin.fb_read_always;
Glide64mk2_aspectmode.SelectedIndex = s.Glide64mk2Plugin.aspectmode;
Glide64mk2_fb_crc_mode.SelectedIndex = s.Glide64mk2Plugin.fb_crc_mode;
Glide64mk2_enable_hacks_for_game.SelectedIndex = s.Glide64mk2Plugin.enable_hacks_for_game;
Glide64mk2_read_back_to_screen.SelectedIndex = s.Glide64mk2Plugin.read_back_to_screen;
Glide64mk2_fast_crc.Checked = s.Glide64mk2Plugin.fast_crc;
Glide64mk2_use_sts1_only.Checked = ss.Glide64mk2Plugin.use_sts1_only;
Glide64mk2_optimize_texrect.Checked = ss.Glide64mk2Plugin.optimize_texrect;
Glide64mk2_increase_texrect_edge.Checked = ss.Glide64mk2Plugin.increase_texrect_edge;
Glide64mk2_ignore_aux_copy.Checked = ss.Glide64mk2Plugin.ignore_aux_copy;
Glide64mk2_hires_buf_clear.Checked = ss.Glide64mk2Plugin.hires_buf_clear;
Glide64mk2_force_microcheck.Checked = ss.Glide64mk2Plugin.force_microcheck;
Glide64mk2_fog.Checked = ss.Glide64mk2Plugin.fog;
Glide64mk2_fb_smart.Checked = ss.Glide64mk2Plugin.fb_smart;
Glide64mk2_fb_read_alpha.Checked = ss.Glide64mk2Plugin.fb_read_alpha;
Glide64mk2_fb_hires.Checked = ss.Glide64mk2Plugin.fb_hires;
Glide64mk2_detect_cpu_write.Checked = ss.Glide64mk2Plugin.detect_cpu_write;
Glide64mk2_decrease_fillrect_edge.Checked = ss.Glide64mk2Plugin.decrease_fillrect_edge;
Glide64mk2_buff_clear.Checked = ss.Glide64mk2Plugin.buff_clear;
Glide64mk2_alt_tex_size.Checked = ss.Glide64mk2Plugin.alt_tex_size;
Glide64mk2_swapmode.SelectedIndex = ss.Glide64mk2Plugin.swapmode;
Glide64mk2_stipple_pattern.Text = ss.Glide64mk2Plugin.stipple_pattern.ToString();
Glide64mk2_stipple_mode.Text = ss.Glide64mk2Plugin.stipple_mode.ToString();
Glide64mk2_lodmode.SelectedIndex = ss.Glide64mk2Plugin.lodmode;
Glide64mk2_filtering.SelectedIndex = ss.Glide64mk2Plugin.filtering;
Glide64mk2_correct_viewport.Checked = ss.Glide64mk2Plugin.correct_viewport;
Glide64mk2_force_calc_sphere.Checked = ss.Glide64mk2Plugin.force_calc_sphere;
Glide64mk2_pal230.Checked = ss.Glide64mk2Plugin.pal230;
Glide64mk2_texture_correction.Checked = ss.Glide64mk2Plugin.texture_correction;
Glide64mk2_n64_z_scale.Checked = ss.Glide64mk2Plugin.n64_z_scale;
Glide64mk2_old_style_adither.Checked = ss.Glide64mk2Plugin.old_style_adither;
Glide64mk2_zmode_compare_less.Checked = ss.Glide64mk2Plugin.zmode_compare_less;
Glide64mk2_adjust_aspect.Checked = ss.Glide64mk2Plugin.adjust_aspect;
Glide64mk2_clip_zmax.Checked = ss.Glide64mk2Plugin.clip_zmax;
Glide64mk2_clip_zmin.Checked = ss.Glide64mk2Plugin.clip_zmin;
Glide64mk2_force_quad3d.Checked = ss.Glide64mk2Plugin.force_quad3d;
Glide64mk2_useless_is_useless.Checked = ss.Glide64mk2Plugin.useless_is_useless;
Glide64mk2_fb_read_always.Checked = ss.Glide64mk2Plugin.fb_read_always;
Glide64mk2_aspectmode.SelectedIndex = ss.Glide64mk2Plugin.aspectmode;
Glide64mk2_fb_crc_mode.SelectedIndex = ss.Glide64mk2Plugin.fb_crc_mode;
Glide64mk2_enable_hacks_for_game.SelectedIndex = ss.Glide64mk2Plugin.enable_hacks_for_game;
Glide64mk2_read_back_to_screen.SelectedIndex = ss.Glide64mk2Plugin.read_back_to_screen;
Glide64mk2_fast_crc.Checked = ss.Glide64mk2Plugin.fast_crc;
}
}

View File

@ -28,7 +28,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
private readonly EventWaitHandle _completeThreadEvent = new EventWaitHandle(false, EventResetMode.AutoReset);
private mupen64plusApi api; // mupen64plus DLL Api
private N64SyncSettings _syncSettings;
private N64Settings _settings;
private bool _pendingThreadTerminate;
private DisplayType _display_type = DisplayType.NTSC;
@ -43,7 +46,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
/// <param name="game">Game information of game to load</param>
/// <param name="rom">Rom that should be loaded</param>
/// <param name="SyncSettings">N64SyncSettings object</param>
public N64(CoreComm comm, GameInfo game, byte[] rom, object SyncSettings)
public N64(CoreComm comm, GameInfo game, byte[] rom, object settings, object syncSettings)
{
int SaveType = 0;
if (game.OptionValue("SaveType") == "EEPROM_16K")
@ -53,7 +56,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
CoreComm = comm;
_syncSettings = (N64SyncSettings)SyncSettings ?? new N64SyncSettings();
_syncSettings = (N64SyncSettings)syncSettings ?? new N64SyncSettings();
_settings = (N64Settings)settings ?? new N64Settings();
byte country_code = rom[0x3E];
switch (country_code)
@ -93,7 +97,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
StartThreadLoop();
var videosettings = _syncSettings.GetVPS(game);
var videosettings = _syncSettings.GetVPS(game, _settings.VideoSizeX, _settings.VideoSizeY);
var coreType = _syncSettings.CoreType;
//zero 19-apr-2014 - added this to solve problem with SDL initialization corrupting the main thread (I think) and breaking subsequent emulators (for example, NES)
@ -513,7 +517,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
public object GetSettings()
{
return null;
return _settings.Clone();
}
public object GetSyncSettings()
@ -523,12 +527,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
public bool PutSettings(object o)
{
return false;
_settings = (N64Settings)o;
return true;
}
public bool PutSyncSettings(object o)
{
_syncSettings = (N64SyncSettings)o; return true;
_syncSettings = (N64SyncSettings)o;
return true;
}
#endregion

View File

@ -6,6 +6,21 @@ using System.ComponentModel;
namespace BizHawk.Emulation.Cores.Nintendo.N64
{
public class N64Settings
{
public int VideoSizeX = 320;
public int VideoSizeY = 240;
public N64Settings Clone()
{
return new N64Settings
{
VideoSizeX = VideoSizeX,
VideoSizeY = VideoSizeY,
};
}
}
public class N64SyncSettings
{
public CORETYPE CoreType = CORETYPE.Dynarec;
@ -34,8 +49,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
}
public PLUGINTYPE VidPlugin = PLUGINTYPE.RICE;
public int VideoSizeX = 320;
public int VideoSizeY = 240;
public N64ControllerSettings[] Controllers =
{
new N64ControllerSettings(),
@ -55,8 +69,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
CoreType = CoreType,
RspType = RspType,
VidPlugin = VidPlugin,
VideoSizeX = VideoSizeX,
VideoSizeY = VideoSizeY,
RicePlugin = RicePlugin.Clone(),
GlidePlugin = GlidePlugin.Clone(),
Glide64mk2Plugin = Glide64mk2Plugin.Clone(),
@ -65,9 +77,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
}
// get mupenapi internal object
public VideoPluginSettings GetVPS(GameInfo game)
public VideoPluginSettings GetVPS(GameInfo game, int videoSizeX, int videoSizeY)
{
var ret = new VideoPluginSettings(VidPlugin, VideoSizeX, VideoSizeY);
var ret = new VideoPluginSettings(VidPlugin, videoSizeX, videoSizeY);
IPluginSettings ips = null;
switch (VidPlugin)
{