From 2928137a20cd1cd7ce932a3ea7d94e32c908928f Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 20 Jul 2014 14:33:57 +0000 Subject: [PATCH] N64 sync settings - some reorg --- .../config/N64/N64VideoPluginconfig.cs | 156 ++-- .../config/N64/NewN64PluginSettings.cs | 4 +- .../BizHawk.Emulation.Cores.csproj | 5 + .../Consoles/Nintendo/N64/N64Settings.cs | 17 + .../Nintendo/N64/N64SyncSettings.Glide.cs | 192 +++++ .../Nintendo/N64/N64SyncSettings.GlideMk2.cs | 175 +++++ .../Nintendo/N64/N64SyncSettings.Jabo.cs | 162 ++++ .../Nintendo/N64/N64SyncSettings.Rice.cs | 390 ++++++++++ .../Consoles/Nintendo/N64/N64SyncSettings.cs | 720 +----------------- .../N64/NativeAPI/mupen64plusCoreApi.cs | 6 +- .../N64/NativeAPI/mupen64plusVideoApi.cs | 12 +- 11 files changed, 1038 insertions(+), 801 deletions(-) create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64Settings.cs create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Glide.cs create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.GlideMk2.cs create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Jabo.cs create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Rice.cs diff --git a/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs b/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs index 55219dfc52..f42d879563 100644 --- a/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs +++ b/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs @@ -96,10 +96,10 @@ namespace BizHawk.Client.EmuHawk s.VideoSizeY = Int32.Parse(strArr[1].Trim()); switch (PluginComboBox.Text) { - case "Rice": ss.VidPlugin = PLUGINTYPE.RICE; break; - case "Glide64": ss.VidPlugin = PLUGINTYPE.GLIDE; break; - case "Glide64mk2": ss.VidPlugin = PLUGINTYPE.GLIDE64MK2; break; - case "Jabo 1.6.1": ss.VidPlugin = PLUGINTYPE.JABO; break; + case "Rice": ss.VidPlugin = PluginType.RICE; break; + case "Glide64": ss.VidPlugin = PluginType.GLIDE; break; + case "Glide64mk2": ss.VidPlugin = PluginType.GLIDE64MK2; break; + case "Jabo 1.6.1": ss.VidPlugin = PluginType.JABO; break; } //Rice @@ -185,24 +185,24 @@ namespace BizHawk.Client.EmuHawk ss.RicePlugin.ScreenUpdateSettingHack = RiceScreenUpdateSettingHack_Combo.SelectedIndex; ss.RicePlugin.EnableHacksForGame = RiceEnableHacksForGame_Combo.SelectedIndex; - 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; + ss.GlidePlugin.AutodetectUCode = Glide_autodetect_ucode.Checked; + ss.GlidePlugin.UCode = Glide_ucode.SelectedIndex; + ss.GlidePlugin.FlameCorona = Glide_flame_corona.Checked; + ss.GlidePlugin.CardId = Glide_card_id.SelectedIndex; + ss.GlidePlugin.TexFilter = Glide_tex_filter.SelectedIndex; + ss.GlidePlugin.WireFrame = Glide_wireframe.Checked; + ss.GlidePlugin.WFMode = Glide_wfmode.SelectedIndex; + ss.GlidePlugin.FastCRC = Glide_fast_crc.Checked; + ss.GlidePlugin.FilterCache = Glide_filter_cache.Checked; + ss.GlidePlugin.UnkAsRed = Glide_unk_as_red.Checked; + ss.GlidePlugin.FbReadAlways = Glide_fb_read_always.Checked; + ss.GlidePlugin.MotionBlur = Glide_motionblur.Checked; + ss.GlidePlugin.FbRender = Glide_fb_render.Checked; + ss.GlidePlugin.NoDitheredAlpha = Glide_noditheredalpha.Checked; + ss.GlidePlugin.NoGlsl = Glide_noglsl.Checked; + ss.GlidePlugin.Fbo = Glide_fbo.Checked; + ss.GlidePlugin.DisableAuxBuf = Glide_disable_auxbuf.Checked; + ss.GlidePlugin.FbGetInfo = Glide_fb_get_info.Checked; ss.GlidePlugin.offset_x = Glide_offset_x.Text.IsSigned() ? @@ -226,24 +226,24 @@ namespace BizHawk.Client.EmuHawk 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.FbHiRes = Glide_fb_hires.Checked; + ss.GlidePlugin.FbReadAlpha = Glide_fb_read_alpha.Checked; + ss.GlidePlugin.FbSmart = Glide_fb_smart.Checked; + ss.GlidePlugin.FillColorFix = Glide_fillcolor_fix.Checked; + ss.GlidePlugin.Fog = Glide_fog.Checked; + ss.GlidePlugin.ForceDepthCompare = Glide_force_depth_compare.Checked; + ss.GlidePlugin.ForceMicroCheck = Glide_force_microcheck.Checked; + ss.GlidePlugin.FbHiResBufClear = Glide_fb_hires_buf_clear.Checked; + ss.GlidePlugin.FbIgnoreAuxCopy = Glide_fb_ignore_aux_copy.Checked; + ss.GlidePlugin.FbIgnorePrevious = Glide_fb_ignore_previous.Checked; + ss.GlidePlugin.IncreasePrimDepth = Glide_increase_primdepth.Checked; + ss.GlidePlugin.IncreaseTexRectEdge = Glide_increase_texrect_edge.Checked; + ss.GlidePlugin.FbOptimizeTexRect = Glide_fb_optimize_texrect.Checked; + ss.GlidePlugin.FbOptimizeWrite = 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; + ss.GlidePlugin.SoftDepthCompare = Glide_soft_depth_compare.Checked; + ss.GlidePlugin.UseSts1Only = Glide_use_sts1_only.Checked; + ss.GlidePlugin.WrapBigTex = Glide_wrap_big_tex.Checked; ss.GlidePlugin.depth_bias = Glide_depth_bias.Text.IsSigned() ? @@ -354,10 +354,10 @@ namespace BizHawk.Client.EmuHawk } switch (ss.VidPlugin) { - case PLUGINTYPE.GLIDE64MK2: PluginComboBox.Text = "Glide64mk2"; break; - case PLUGINTYPE.GLIDE: PluginComboBox.Text = "Glide64"; break; - case PLUGINTYPE.RICE: PluginComboBox.Text = "Rice"; break; - case PLUGINTYPE.JABO: PluginComboBox.Text = "Jabo 1.6.1"; break; + case PluginType.GLIDE64MK2: PluginComboBox.Text = "Glide64mk2"; break; + case PluginType.GLIDE: PluginComboBox.Text = "Glide64"; break; + case PluginType.RICE: PluginComboBox.Text = "Rice"; break; + case PluginType.JABO: PluginComboBox.Text = "Jabo 1.6.1"; break; } //Rice @@ -442,24 +442,24 @@ namespace BizHawk.Client.EmuHawk RiceEnableHacksForGame_Combo.SelectedIndex = ss.RicePlugin.EnableHacksForGame; } - 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_autodetect_ucode.Checked = ss.GlidePlugin.AutodetectUCode; + Glide_ucode.SelectedIndex = ss.GlidePlugin.UCode; + Glide_flame_corona.Checked = ss.GlidePlugin.FlameCorona; + Glide_card_id.SelectedIndex = ss.GlidePlugin.CardId; + Glide_tex_filter.SelectedIndex = ss.GlidePlugin.TexFilter; + Glide_wireframe.Checked = ss.GlidePlugin.WireFrame; + Glide_wfmode.SelectedIndex = ss.GlidePlugin.WFMode; + Glide_fast_crc.Checked = ss.GlidePlugin.FastCRC; + Glide_filter_cache.Checked = ss.GlidePlugin.FilterCache; + Glide_unk_as_red.Checked = ss.GlidePlugin.UnkAsRed; + Glide_fb_read_always.Checked = ss.GlidePlugin.FbReadAlways; + Glide_motionblur.Checked = ss.GlidePlugin.MotionBlur; + Glide_fb_render.Checked = ss.GlidePlugin.FbRender; + Glide_noditheredalpha.Checked = ss.GlidePlugin.NoDitheredAlpha; + Glide_noglsl.Checked = ss.GlidePlugin.NoGlsl; + Glide_fbo.Checked = ss.GlidePlugin.Fbo; + Glide_disable_auxbuf.Checked = ss.GlidePlugin.DisableAuxBuf; + Glide_fb_get_info.Checked = ss.GlidePlugin.FbGetInfo; 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(); @@ -477,24 +477,24 @@ namespace BizHawk.Client.EmuHawk 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_fb_hires.Checked = ss.GlidePlugin.FbHiRes; + Glide_fb_read_alpha.Checked = ss.GlidePlugin.FbReadAlpha; + Glide_fb_smart.Checked = ss.GlidePlugin.FbSmart; + Glide_fillcolor_fix.Checked = ss.GlidePlugin.FillColorFix; + Glide_fog.Checked = ss.GlidePlugin.Fog; + Glide_force_depth_compare.Checked = ss.GlidePlugin.ForceDepthCompare; + Glide_force_microcheck.Checked = ss.GlidePlugin.ForceMicroCheck; + Glide_fb_hires_buf_clear.Checked = ss.GlidePlugin.FbHiResBufClear; + Glide_fb_ignore_aux_copy.Checked = ss.GlidePlugin.FbIgnoreAuxCopy; + Glide_fb_ignore_previous.Checked = ss.GlidePlugin.FbIgnorePrevious; + Glide_increase_primdepth.Checked = ss.GlidePlugin.IncreasePrimDepth; + Glide_increase_texrect_edge.Checked = ss.GlidePlugin.IncreaseTexRectEdge; + Glide_fb_optimize_texrect.Checked = ss.GlidePlugin.FbOptimizeTexRect; + Glide_fb_optimize_write.Checked = ss.GlidePlugin.FbOptimizeWrite; 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_soft_depth_compare.Checked = ss.GlidePlugin.SoftDepthCompare; + Glide_use_sts1_only.Checked = ss.GlidePlugin.UseSts1Only; + Glide_wrap_big_tex.Checked = ss.GlidePlugin.WrapBigTex; Glide_depth_bias.Text = ss.GlidePlugin.depth_bias.ToString(); Glide_filtering.SelectedIndex = ss.GlidePlugin.filtering; diff --git a/BizHawk.Client.EmuHawk/config/N64/NewN64PluginSettings.cs b/BizHawk.Client.EmuHawk/config/N64/NewN64PluginSettings.cs index 1416174171..fdad226ddc 100644 --- a/BizHawk.Client.EmuHawk/config/N64/NewN64PluginSettings.cs +++ b/BizHawk.Client.EmuHawk/config/N64/NewN64PluginSettings.cs @@ -45,7 +45,7 @@ namespace BizHawk.Client.EmuHawk ss.VidPlugin = PluginComboBox.SelectedItem .ToString() - .GetEnumFromDescription(); + .GetEnumFromDescription(); PutSettings(s); PutSyncSettings(ss); @@ -61,7 +61,7 @@ namespace BizHawk.Client.EmuHawk CoreTypeDropdown.PopulateFromEnum(ss.CoreType); RspTypeDropdown.PopulateFromEnum(ss.RspType); - PluginComboBox.PopulateFromEnum(ss.VidPlugin); + PluginComboBox.PopulateFromEnum(ss.VidPlugin); var video_setting = s.VideoSizeX + " x " diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index dfee1069e0..d7135f9a64 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -241,6 +241,11 @@ + + + + + diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64Settings.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64Settings.cs new file mode 100644 index 0000000000..70d3bc6b62 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64Settings.cs @@ -0,0 +1,17 @@ +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, + }; + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Glide.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Glide.cs new file mode 100644 index 0000000000..399ee3e298 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Glide.cs @@ -0,0 +1,192 @@ +using System.Collections.Generic; +using System.ComponentModel; +using Newtonsoft.Json; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.N64 +{ + public partial class N64SyncSettings + { + public class N64GlidePluginSettings : IPluginSettings + { + public N64GlidePluginSettings() + { + WFMode = 1; + WireFrame = false; + CardId = 0; + FlameCorona = false; + UCode = 2; + AutodetectUCode = true; + MotionBlur = false; + FbReadAlways = false; + UnkAsRed = false; + FilterCache = false; + FastCRC = false; + DisableAuxBuf = false; + Fbo = false; + NoGlsl = true; + NoDitheredAlpha = true; + TexFilter = 0; + FbRender = false; + WrapBigTex = false; + UseSts1Only = false; + SoftDepthCompare = false; + PPL = false; + FbOptimizeWrite = false; + FbOptimizeTexRect = true; + IncreaseTexRectEdge = false; + IncreasePrimDepth = false; + FbIgnorePrevious = false; + FbIgnoreAuxCopy = false; + FbHiResBufClear = true; + ForceMicroCheck = false; + ForceDepthCompare = false; + Fog = true; + FillColorFix = false; + FbSmart = false; + FbReadAlpha = false; + FbGetInfo = false; + FbHiRes = true; + fb_clear = false; + detect_cpu_write = false; + decrease_fillrect_edge = false; + buff_clear = true; + alt_tex_size = false; + UseDefaultHacks = true; + enable_hacks_for_game = 0; + swapmode = 1; + stipple_pattern = 1041204192; + stipple_mode = 2; + scale_y = 100000; + scale_x = 100000; + offset_y = 0; + offset_x = 0; + lodmode = 0; + fix_tex_coord = 0; + filtering = 1; + depth_bias = 20; + } + + [JsonIgnore] + public PluginType PluginType + { + get { return PluginType.GLIDE; } + } + + public int WFMode { get; set; } + public bool WireFrame { get; set; } + public int CardId { get; set; } + public bool FlameCorona { get; set; } + public int UCode { get; set; } + public bool AutodetectUCode { get; set; } + public bool MotionBlur { get; set; } + public bool FbReadAlways { get; set; } + public bool UnkAsRed { get; set; } + public bool FilterCache { get; set; } + public bool FastCRC { get; set; } + public bool DisableAuxBuf { get; set; } + public bool Fbo { get; set; } + public bool NoGlsl { get; set; } + public bool NoDitheredAlpha { get; set; } + public int TexFilter { get; set; } + public bool FbRender { get; set; } + public bool WrapBigTex { get; set; } + public bool UseSts1Only { get; set; } + public bool SoftDepthCompare { get; set; } + public bool PPL { get; set; } + public bool FbOptimizeWrite { get; set; } + public bool FbOptimizeTexRect { get; set; } + public bool IncreaseTexRectEdge { get; set; } + public bool IncreasePrimDepth { get; set; } + public bool FbIgnorePrevious { get; set; } + public bool FbIgnoreAuxCopy { get; set; } + public bool FbHiResBufClear { get; set; } + public bool ForceMicroCheck { get; set; } + public bool ForceDepthCompare { get; set; } + public bool Fog { get; set; } + public bool FillColorFix { get; set; } + public bool FbSmart { get; set; } + public bool FbReadAlpha { get; set; } + public bool FbGetInfo { get; set; } + public bool FbHiRes { get; set; } + public bool fb_clear { get; set; } + public bool detect_cpu_write { get; set; } + public bool decrease_fillrect_edge { get; set; } + public bool buff_clear { get; set; } + public bool alt_tex_size { get; set; } + public bool UseDefaultHacks { get; set; } + public int enable_hacks_for_game { get; set; } + public int swapmode { get; set; } + public int stipple_pattern { get; set; } + public int stipple_mode { get; set; } + public int scale_y { get; set; } + public int scale_x { get; set; } + public int offset_y { get; set; } + public int offset_x { get; set; } + public int lodmode { get; set; } + public int fix_tex_coord { get; set; } + public int filtering { get; set; } + public int depth_bias { get; set; } + + public N64GlidePluginSettings Clone() + { + return (N64GlidePluginSettings)MemberwiseClone(); + } + + public void FillPerGameHacks(GameInfo game) + { + if (UseDefaultHacks) + { + alt_tex_size = game.GetBool("Glide_alt_tex_size", false); + buff_clear = game.GetBool("Glide_buff_clear", true); + decrease_fillrect_edge = game.GetBool("Glide_decrease_fillrect_edge", false); + detect_cpu_write = game.GetBool("Glide_detect_cpu_write", false); + fb_clear = game.GetBool("Glide_fb_clear", false); + FbHiRes = game.GetBool("Glide_fb_clear", true); + FbReadAlpha = game.GetBool("Glide_fb_read_alpha", false); + FbSmart = game.GetBool("Glide_fb_smart", false); + FillColorFix = game.GetBool("Glide_fillcolor_fix", false); + Fog = game.GetBool("Glide_fog", true); + ForceDepthCompare = game.GetBool("Glide_force_depth_compare", false); + ForceMicroCheck = game.GetBool("Glide_force_microcheck", false); + FbHiResBufClear = game.GetBool("Glide_fb_hires_buf_clear", true); + FbIgnoreAuxCopy = game.GetBool("Glide_fb_ignore_aux_copy", false); + FbIgnorePrevious = game.GetBool("Glide_fb_ignore_previous", false); + IncreasePrimDepth = game.GetBool("Glide_increase_primdepth", false); + IncreaseTexRectEdge = game.GetBool("Glide_increase_texrect_edge", false); + FbOptimizeTexRect = game.GetBool("Glide_fb_optimize_texrect", true); + FbOptimizeWrite = game.GetBool("Glide_fb_optimize_write", false); + PPL = game.GetBool("Glide_PPL", false); + SoftDepthCompare = game.GetBool("Glide_soft_depth_compare", false); + UseSts1Only = game.GetBool("Glide_use_sts1_only", false); + WrapBigTex = game.GetBool("Glide_wrap_big_tex", false); + + depth_bias = game.GetInt("Glide_depth_bias", 20); + filtering = game.GetInt("Glide_filtering", 1); + fix_tex_coord = game.GetInt("Glide_fix_tex_coord", 0); + lodmode = game.GetInt("Glide_lodmode", 0); + + stipple_mode = game.GetInt("Glide_stipple_mode", 2); + stipple_pattern = game.GetInt("Glide_stipple_pattern", 1041204192); + swapmode = game.GetInt("Glide_swapmode", 1); + enable_hacks_for_game = game.GetInt("Glide_enable_hacks_for_game", 0); + } + } + + public Dictionary GetPluginSettings() + { + //TODO: deal witn the game depedent settings + var dictionary = new Dictionary(); + var members = this.GetType().GetFields(); + foreach (var member in members) + { + var field = this.GetType().GetField(member.Name).GetValue(this); + dictionary.Add(member.Name, field); + } + + return dictionary; + } + } + } +} \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.GlideMk2.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.GlideMk2.cs new file mode 100644 index 0000000000..ca9a37d064 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.GlideMk2.cs @@ -0,0 +1,175 @@ +using System.Collections.Generic; +using System.ComponentModel; +using Newtonsoft.Json; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.N64 +{ + public partial class N64SyncSettings + { + public class N64Glide64mk2PluginSettings : IPluginSettings + { + public N64Glide64mk2PluginSettings() + { + wrpFBO = true; + card_id = 0; + use_sts1_only = false; + optimize_texrect = true; + increase_texrect_edge = false; + ignore_aux_copy = false; + hires_buf_clear = true; + force_microcheck = false; + fog = true; + fb_smart = false; + fb_read_alpha = false; + fb_hires = true; + detect_cpu_write = false; + decrease_fillrect_edge = false; + buff_clear = true; + alt_tex_size = false; + swapmode = 1; + stipple_pattern = 1041204192; + stipple_mode = 2; + lodmode = 0; + filtering = 0; + wrpAnisotropic = false; + correct_viewport = false; + force_calc_sphere = false; + pal230 = false; + texture_correction = true; + n64_z_scale = false; + old_style_adither = false; + zmode_compare_less = false; + adjust_aspect = true; + clip_zmax = true; + clip_zmin = false; + force_quad3d = false; + useless_is_useless = false; + fb_read_always = false; + fb_get_info = false; + fb_render = true; + aspectmode = 0; + fb_crc_mode = 1; + fast_crc = true; + UseDefaultHacks = true; + enable_hacks_for_game = 0; + read_back_to_screen = 0; + } + + [JsonIgnore] + public PluginType PluginType + { + get { return PluginType.GLIDE64MK2; } + } + + public bool wrpFBO { get; set; } + public int card_id { get; set; } + public bool use_sts1_only { get; set; } + public bool optimize_texrect { get; set; } + public bool increase_texrect_edge { get; set; } + public bool ignore_aux_copy { get; set; } + public bool hires_buf_clear { get; set; } + public bool force_microcheck { get; set; } + public bool fog { get; set; } + public bool fb_smart { get; set; } + public bool fb_read_alpha { get; set; } + public bool fb_hires { get; set; } + public bool detect_cpu_write { get; set; } + public bool decrease_fillrect_edge { get; set; } + public bool buff_clear { get; set; } + public bool alt_tex_size { get; set; } + public int swapmode { get; set; } + public int stipple_pattern { get; set; } + public int stipple_mode { get; set; } + public int lodmode { get; set; } + public int filtering { get; set; } + public bool wrpAnisotropic { get; set; } + public bool correct_viewport { get; set; } + public bool force_calc_sphere { get; set; } + public bool pal230 { get; set; } + public bool texture_correction { get; set; } + public bool n64_z_scale { get; set; } + public bool old_style_adither { get; set; } + public bool zmode_compare_less { get; set; } + public bool adjust_aspect { get; set; } + public bool clip_zmax { get; set; } + public bool clip_zmin { get; set; } + public bool force_quad3d { get; set; } + public bool useless_is_useless { get; set; } + public bool fb_read_always { get; set; } + public bool fb_get_info { get; set; } + public bool fb_render { get; set; } + public int aspectmode { get; set; } + public int fb_crc_mode { get; set; } + public bool fast_crc { get; set; } + public bool UseDefaultHacks { get; set; } + public int enable_hacks_for_game { get; set; } + public int read_back_to_screen { get; set; } + + public N64Glide64mk2PluginSettings Clone() + { + return (N64Glide64mk2PluginSettings)MemberwiseClone(); + } + + public void FillPerGameHacks(GameInfo game) + { + if (UseDefaultHacks) + { + use_sts1_only = game.GetBool("Glide64mk2_use_sts1_only", false); + optimize_texrect = game.GetBool("Glide64mk2_optimize_texrect", true); + increase_texrect_edge = game.GetBool("Glide64mk2_increase_texrect_edge", false); + ignore_aux_copy = game.GetBool("Glide64mk2_ignore_aux_copy", false); + hires_buf_clear = game.GetBool("Glide64mk2_hires_buf_clear", true); + force_microcheck = game.GetBool("Glide64mk2_force_microcheck", false); + fog = game.GetBool("Glide64mk2_fog", true); + fb_smart = game.GetBool("Glide64mk2_fb_smart", false); + fb_read_alpha = game.GetBool("Glide64mk2_fb_read_alpha", false); + fb_hires = game.GetBool("Glide64mk2_fb_hires", true); + detect_cpu_write = game.GetBool("Glide64mk2_detect_cpu_write", false); + decrease_fillrect_edge = game.GetBool("Glide64mk2_decrease_fillrect_edge", false); + buff_clear = game.GetBool("Glide64mk2_buff_clear", true); + alt_tex_size = game.GetBool("Glide64mk2_alt_tex_size", true); + swapmode = game.GetInt("Glide64mk2_swapmode", 1); + stipple_pattern = game.GetInt("Glide64mk2_stipple_pattern", 1041204192); + stipple_mode = game.GetInt("Glide64mk2_stipple_mode", 2); + lodmode = game.GetInt("Glide64mk2_lodmode", 0); + filtering = game.GetInt("Glide64mk2_filtering", 0); + correct_viewport = game.GetBool("Glide64mk2_correct_viewport", false); + force_calc_sphere = game.GetBool("Glide64mk2_force_calc_sphere", false); + pal230 = game.GetBool("Glide64mk2_pal230", false); + texture_correction = game.GetBool("Glide64mk2_texture_correction", true); + n64_z_scale = game.GetBool("Glide64mk2_n64_z_scale", false); + old_style_adither = game.GetBool("Glide64mk2_old_style_adither", false); + zmode_compare_less = game.GetBool("Glide64mk2_zmode_compare_less", false); + adjust_aspect = game.GetBool("Glide64mk2_adjust_aspect", true); + clip_zmax = game.GetBool("Glide64mk2_clip_zmax", true); + clip_zmin = game.GetBool("Glide64mk2_clip_zmin", false); + force_quad3d = game.GetBool("Glide64mk2_force_quad3d", false); + useless_is_useless = game.GetBool("Glide64mk2_useless_is_useless", false); + fb_read_always = game.GetBool("Glide64mk2_fb_read_always", false); + aspectmode = game.GetInt("Glide64mk2_aspectmode", 0); + fb_crc_mode = game.GetInt("Glide64mk2_fb_crc_mode", 1); + enable_hacks_for_game = game.GetInt("Glide64mk2_enable_hacks_for_game", 0); + read_back_to_screen = game.GetInt("Glide64mk2_read_back_to_screen", 0); + fast_crc = game.GetBool("Glide64mk2_fast_crc", true); + } + } + + public Dictionary GetPluginSettings() + { + //TODO: deal witn the game depedent settings + var dictionary = new Dictionary(); + var members = this.GetType().GetFields(); + foreach (var member in members) + { + var field = this.GetType().GetField(member.Name).GetValue(this); + dictionary.Add(member.Name, field); + } + + return dictionary; + } + } + + } +} \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Jabo.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Jabo.cs new file mode 100644 index 0000000000..cf11d31fa9 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Jabo.cs @@ -0,0 +1,162 @@ +using System.Collections.Generic; +using System.ComponentModel; +using Newtonsoft.Json; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.N64 +{ + public partial class N64SyncSettings + { + public class N64JaboPluginSettings : IPluginSettings + { + public N64JaboPluginSettings() + { + anisotropic_level = ANISOTROPIC_FILTERING_LEVEL.four_times; + brightness = 100; + super2xsal = false; + texture_filter = false; + adjust_aspect_ratio = false; + legacy_pixel_pipeline = false; + alpha_blending = false; + wireframe = false; + direct3d_transformation_pipeline = false; + z_compare = false; + copy_framebuffer = false; + resolution_width = -1; + resolution_height = -1; + clear_mode = DIRECT3D_CLEAR_MODE.def; + } + + [JsonIgnore] + public PluginType PluginType + { + get { return PluginType.JABO; } + } + + public void FillPerGameHacks(GameInfo game) + { + + } + + public Dictionary GetPluginSettings() + { + //TODO: deal witn the game depedent settings + var dictionary = new Dictionary(); + var members = this.GetType().GetFields(); + foreach (var member in members) + { + var field = this.GetType().GetField(member.Name).GetValue(this); + dictionary.Add(member.Name, field); + } + + return dictionary; + } + + public enum ANISOTROPIC_FILTERING_LEVEL + { + [Description("Off")] + off = 0, + + [Description("2X")] + two_times = 1, + + [Description("4X")] + four_times = 2, + + [Description("8X")] + eight_times = 3, + + [Description("16X")] + sixteen_times = 4 + } + + [DefaultValue(ANISOTROPIC_FILTERING_LEVEL.four_times)] + [Description("Anisotropic filtering level")] + //[DisplayName("Anisotropic filtering")] + public ANISOTROPIC_FILTERING_LEVEL anisotropic_level { get; set; } + + [DefaultValue(100)] + [Description("Brightness level, 100%-190%")] + //[DisplayName("Brightness")] + public int brightness { get; set; } + + [DefaultValue(false)] + [Description("Enables Super2xSal textures")] + //[DisplayName("Super2xSal textures")] + public bool super2xsal { get; set; } + + [DefaultValue(false)] + [Description("Always use texture filter")] + //[DisplayName("Always use texture filter")] + public bool texture_filter { get; set; } + + [DefaultValue(false)] + [Description("Adjust game aspect ratio to match yours")] + //[DisplayName("Adjust game aspect ratio to match yours")] + public bool adjust_aspect_ratio { get; set; } + + [DefaultValue(false)] + [Description("Use legacy pixel pipeline")] + //[DisplayName("Use legacy pixel pipeline")] + public bool legacy_pixel_pipeline { get; set; } + + [DefaultValue(false)] + [Description("Force alpha blending")] + //[DisplayName("Force alpha blending")] + public bool alpha_blending { get; set; } + + [DefaultValue(false)] + [Description("Wireframe rendering")] + //[DisplayName("Wireframe rendering")] + public bool wireframe { get; set; } + + [DefaultValue(false)] + [Description("Use Direct3D transformation pipeline")] + //[DisplayName("Use Direct3D transformation pipeline")] + public bool direct3d_transformation_pipeline { get; set; } + + [DefaultValue(false)] + [Description("Force Z Compare")] + //[DisplayName("Force Z Compare")] + public bool z_compare { get; set; } + + [DefaultValue(false)] + [Description("Copy framebuffer to RDRAM")] + //[DisplayName("Copy framebuffer to RDRAM")] + public bool copy_framebuffer { get; set; } + + [DefaultValue(-1)] + [Description("Emulated Width")] + //[DisplayName("Emulated Width")] + public int resolution_width { get; set; } + + [DefaultValue(-1)] + [Description("Emulated Height")] + //[DisplayName("Emulated Height")] + public int resolution_height { get; set; } + + public enum DIRECT3D_CLEAR_MODE + { + [Description("Default")] + def = 0, + + [Description("Only Per Frame")] + per_frame = 1, + + [Description("Always")] + always = 2 + } + [DefaultValue(DIRECT3D_CLEAR_MODE.def)] + [Description("Direct3D Clear Mode")] + //[DisplayName("Direct3D Clear Mode")] + public DIRECT3D_CLEAR_MODE clear_mode { get; set; } + + public N64JaboPluginSettings Clone() + { + return (N64JaboPluginSettings)MemberwiseClone(); + } + } + + } +} \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Rice.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Rice.cs new file mode 100644 index 0000000000..92b6f08693 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Rice.cs @@ -0,0 +1,390 @@ +using System.Collections.Generic; +using System.ComponentModel; +using Newtonsoft.Json; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.N64 +{ + public partial class N64SyncSettings + { + public class N64RicePluginSettings : IPluginSettings + { + public N64RicePluginSettings() + { + FrameBufferSetting = 0; + FrameBufferWriteBackControl = 0; + RenderToTexture = 0; + ScreenUpdateSetting = 4; + Mipmapping = 2; + FogMethod = 0; + ForceTextureFilter = 0; + TextureEnhancement = 0; + TextureEnhancementControl = 0; + TextureQuality = 0; + OpenGLDepthBufferSetting = 16; + MultiSampling = 0; + ColorQuality = 0; + OpenGLRenderSetting = 0; + AnisotropicFiltering = 0; + + NormalAlphaBlender = false; + FastTextureLoading = false; + AccurateTextureMapping = true; + InN64Resolution = false; + SaveVRAM = false; + DoubleSizeForSmallTxtrBuf = false; + DefaultCombinerDisable = false; + EnableHacks = true; + WinFrameMode = false; + FullTMEMEmulation = false; + OpenGLVertexClipper = false; + EnableSSE = true; + EnableVertexShader = false; + SkipFrame = false; + TexRectOnly = false; + SmallTextureOnly = false; + LoadHiResCRCOnly = true; + LoadHiResTextures = false; + DumpTexturesToFiles = false; + + UseDefaultHacks = true; + DisableTextureCRC = false; + DisableCulling = false; + IncTexRectEdge = false; + ZHack = false; + TextureScaleHack = false; + PrimaryDepthHack = false; + Texture1Hack = false; + FastLoadTile = false; + UseSmallerTexture = false; + VIWidth = -1; + VIHeight = -1; + UseCIWidthAndRatio = 0; + FullTMEM = 0; + TxtSizeMethod2 = false; + EnableTxtLOD = false; + FastTextureCRC = 0; + EmulateClear = false; + ForceScreenClear = false; + AccurateTextureMappingHack = 0; + NormalBlender = 0; + DisableBlender = false; + ForceDepthBuffer = false; + DisableObjBG = false; + FrameBufferOption = 0; + RenderToTextureOption = 0; + ScreenUpdateSettingHack = 0; + EnableHacksForGame = 0; + } + + [JsonIgnore] + [Description("Plugin Type")] + public PluginType PluginType + { + get { return PluginType.RICE; } + } + + [DefaultValue(0)] + [DisplayName("Frame Buffer Setting")] + public int FrameBufferSetting { get; set; } + + [DefaultValue(0)] + [DisplayName("Frame Buffer Write Back Control")] + public int FrameBufferWriteBackControl { get; set; } + + [DefaultValue(0)] + [DisplayName("Frame Buffer Write Back Control")] + public int RenderToTexture { get; set; } + + [DefaultValue(4)] + [DisplayName("Screen Update Setting")] + public int ScreenUpdateSetting { get; set; } + + [DefaultValue(2)] + [DisplayName("Mip Mapping")] + public int Mipmapping { get; set; } + + [DefaultValue(0)] + [DisplayName("Fog Method")] + public int FogMethod { get; set; } + + [DefaultValue(0)] + [DisplayName("Force Texture Filter")] + public int ForceTextureFilter { get; set; } + + [DefaultValue(0)] + [DisplayName("Texture Enhancement")] + public int TextureEnhancement { get; set; } + + [DefaultValue(0)] + [DisplayName("Texture Enhancement Control")] + public int TextureEnhancementControl { get; set; } + + [DefaultValue(0)] + [DisplayName("Texture Quality")] + public int TextureQuality { get; set; } + + [DefaultValue(16)] + [DisplayName("OpenGL Depth Buffer Setting")] + public int OpenGLDepthBufferSetting { get; set; } + + [DefaultValue(0)] + [DisplayName("Multi-sampling")] + public int MultiSampling { get; set; } + + [DefaultValue(0)] + [DisplayName("Color Quality")] + public int ColorQuality { get; set; } + + [DefaultValue(0)] + [DisplayName("OpenGL Render Setting")] + public int OpenGLRenderSetting { get; set; } + + [DefaultValue(0)] + [DisplayName("Anisotropic Filter")] + public int AnisotropicFiltering { get; set; } + + [DefaultValue(false)] + [DisplayName("Normal Alpha Blender")] + public bool NormalAlphaBlender { get; set; } + + [DefaultValue(false)] + [DisplayName("Fast Texture Loading")] + public bool FastTextureLoading { get; set; } + + [DefaultValue(true)] + [DisplayName("Accurate Texture Mapping")] + public bool AccurateTextureMapping { get; set; } + + [DefaultValue(false)] + [DisplayName("In N64 Resolution")] + public bool InN64Resolution { get; set; } + + [DefaultValue(false)] + [DisplayName("Save VRAM")] + public bool SaveVRAM { get; set; } + + [DefaultValue(false)] + [DisplayName("Double Size for Small Texture Buffer")] + public bool DoubleSizeForSmallTxtrBuf { get; set; } + + [DefaultValue(false)] + [DisplayName("Default Combiner Disable")] + public bool DefaultCombinerDisable { get; set; } + + [DefaultValue(true)] + [DisplayName("Enable Hacks")] + public bool EnableHacks { get; set; } + + [DefaultValue(false)] + [DisplayName("WinFrame Mode")] + public bool WinFrameMode { get; set; } + + [DefaultValue(false)] + [DisplayName("Full TMEM Emulation")] + public bool FullTMEMEmulation { get; set; } + + [DefaultValue(false)] + [DisplayName("OpenGL Vertex Clipper")] + public bool OpenGLVertexClipper { get; set; } + + [DefaultValue(true)] + [DisplayName("Enable SSE")] + public bool EnableSSE { get; set; } + + [DefaultValue(false)] + [DisplayName("Enable Vertex Shader")] + public bool EnableVertexShader { get; set; } + + [DefaultValue(false)] + [DisplayName("Skip Frame")] + public bool SkipFrame { get; set; } + + [DefaultValue(false)] + [DisplayName("Text Rect Only")] + public bool TexRectOnly { get; set; } + + [DefaultValue(false)] + [DisplayName("Small Texture Only")] + public bool SmallTextureOnly { get; set; } + + [DefaultValue(true)] + [DisplayName("Load Hi Res CRC Only")] + public bool LoadHiResCRCOnly { get; set; } + + [DefaultValue(false)] + [DisplayName("Load Hi Res Textures")] + public bool LoadHiResTextures { get; set; } + + [DefaultValue(false)] + [DisplayName("Dump Textures to Files")] + public bool DumpTexturesToFiles { get; set; } + + [DefaultValue(true)] + [DisplayName("Use Default Hacks")] + public bool UseDefaultHacks { get; set; } + + [DefaultValue(false)] + [DisplayName("Disable Texture CRC")] + public bool DisableTextureCRC { get; set; } + + [DefaultValue(false)] + [DisplayName("Disable Culling")] + public bool DisableCulling { get; set; } + + [DefaultValue(false)] + [DisplayName("Include TexRect Edge")] + public bool IncTexRectEdge { get; set; } + + [DefaultValue(false)] + [DisplayName("ZHack")] + public bool ZHack { get; set; } + + [DefaultValue(false)] + [DisplayName("Texture Scale Hack")] + public bool TextureScaleHack { get; set; } + + [DefaultValue(false)] + [DisplayName("Primary Depth Hack")] + public bool PrimaryDepthHack { get; set; } + + [DefaultValue(false)] + [DisplayName("Texture 1 Hack")] + public bool Texture1Hack { get; set; } + + [DefaultValue(false)] + [DisplayName("Fast Load Tile")] + public bool FastLoadTile { get; set; } + + [DefaultValue(false)] + [DisplayName("Use Smaller Texture")] + public bool UseSmallerTexture { get; set; } + + [DefaultValue(-1)] + [DisplayName("VI Width")] + public int VIWidth { get; set; } + + [DefaultValue(-1)] + [DisplayName("VI Height")] + public int VIHeight { get; set; } + + [DefaultValue(0)] + [DisplayName("Use CI Width and Ratio")] + public int UseCIWidthAndRatio { get; set; } + + [DefaultValue(0)] + [DisplayName("Full THEM")] + public int FullTMEM { get; set; } + + [DefaultValue(false)] + [DisplayName("Text Size Method 2")] + public bool TxtSizeMethod2 { get; set; } + + [DefaultValue(false)] + [DisplayName("Enable Txt LOD")] + public bool EnableTxtLOD { get; set; } + + [DefaultValue(0)] + [DisplayName("Fast Texture CRC")] + public int FastTextureCRC { get; set; } + + [DefaultValue(0)] + [DisplayName("Emulate Clear")] + public bool EmulateClear { get; set; } + + [DefaultValue(false)] + [DisplayName("Force Screen Clear")] + public bool ForceScreenClear { get; set; } + + [DefaultValue(0)] + [DisplayName("Accurate Texture Mapping Hack")] + public int AccurateTextureMappingHack { get; set; } + + [DefaultValue(0)] + [DisplayName("Normal Blender")] + public int NormalBlender { get; set; } + + [DefaultValue(false)] + [DisplayName("Disable Blender")] + public bool DisableBlender { get; set; } + + [DefaultValue(false)] + [DisplayName("Force Depth Buffer")] + public bool ForceDepthBuffer { get; set; } + + [DefaultValue(false)] + [DisplayName("Disable Obj BG")] + public bool DisableObjBG { get; set; } + + [DefaultValue(0)] + [DisplayName("Frame Buffer Option")] + public int FrameBufferOption { get; set; } + + [DefaultValue(0)] + [DisplayName("Render to Texture Option")] + public int RenderToTextureOption { get; set; } + + [DefaultValue(0)] + [DisplayName("Screen Update Setting Hack")] + public int ScreenUpdateSettingHack { get; set; } + + [DefaultValue(0)] + [DisplayName("Enable Hacks for Game")] + public int EnableHacksForGame { get; set; } + + public N64RicePluginSettings Clone() + { + return (N64RicePluginSettings)MemberwiseClone(); + } + + public void FillPerGameHacks(GameInfo game) + { + if (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 GetPluginSettings() + { + //TODO: deal witn the game depedent settings + var dictionary = new Dictionary(); + var members = this.GetType().GetFields(); + foreach (var member in members) + { + var field = this.GetType().GetField(member.Name).GetValue(this); + dictionary.Add(member.Name, field); + } + + return dictionary; + } + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs index e8b5d80b84..611ffd4655 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs @@ -6,22 +6,7 @@ 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 partial class N64SyncSettings { public CORETYPE CoreType = CORETYPE.Dynarec; @@ -48,7 +33,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 Rsp_Z64_hlevideo = 1 } - public PLUGINTYPE VidPlugin = PLUGINTYPE.RICE; + public PluginType VidPlugin = PluginType.RICE; public N64ControllerSettings[] Controllers = { @@ -86,10 +71,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 switch (VidPlugin) { // clone so per game hacks don't overwrite our settings object - case PLUGINTYPE.GLIDE: ips = GlidePlugin.Clone(); break; - case PLUGINTYPE.GLIDE64MK2: ips = Glide64mk2Plugin.Clone(); break; - case PLUGINTYPE.RICE: ips = RicePlugin.Clone(); break; - case PLUGINTYPE.JABO: ips = JaboPlugin.Clone(); break; + case PluginType.GLIDE: ips = GlidePlugin.Clone(); break; + case PluginType.GLIDE64MK2: ips = Glide64mk2Plugin.Clone(); break; + case PluginType.RICE: ips = RicePlugin.Clone(); break; + case PluginType.JABO: ips = JaboPlugin.Clone(); break; } ips.FillPerGameHacks(game); ret.Parameters = ips.GetPluginSettings(); @@ -97,7 +82,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 } } - public enum PLUGINTYPE + public enum PluginType { [Description("Rice")] RICE, @@ -114,700 +99,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 public interface IPluginSettings { - PLUGINTYPE PluginType { get; } + PluginType PluginType { get; } Dictionary GetPluginSettings(); void FillPerGameHacks(GameInfo game); } - public class N64RicePluginSettings : IPluginSettings - { - public N64RicePluginSettings() - { - FrameBufferSetting = 0; - FrameBufferWriteBackControl = 0; - RenderToTexture = 0; - ScreenUpdateSetting = 4; - Mipmapping = 2; - FogMethod = 0; - ForceTextureFilter = 0; - TextureEnhancement = 0; - TextureEnhancementControl = 0; - TextureQuality = 0; - OpenGLDepthBufferSetting = 16; - MultiSampling = 0; - ColorQuality = 0; - OpenGLRenderSetting = 0; - AnisotropicFiltering = 0; - - NormalAlphaBlender = false; - FastTextureLoading = false; - AccurateTextureMapping = true; - InN64Resolution = false; - SaveVRAM = false; - DoubleSizeForSmallTxtrBuf = false; - DefaultCombinerDisable = false; - EnableHacks = true; - WinFrameMode = false; - FullTMEMEmulation = false; - OpenGLVertexClipper = false; - EnableSSE = true; - EnableVertexShader = false; - SkipFrame = false; - TexRectOnly = false; - SmallTextureOnly = false; - LoadHiResCRCOnly = true; - LoadHiResTextures = false; - DumpTexturesToFiles = false; - - UseDefaultHacks = true; - DisableTextureCRC = false; - DisableCulling = false; - IncTexRectEdge = false; - ZHack = false; - TextureScaleHack = false; - PrimaryDepthHack = false; - Texture1Hack = false; - FastLoadTile = false; - UseSmallerTexture = false; - VIWidth = -1; - VIHeight = -1; - UseCIWidthAndRatio = 0; - FullTMEM = 0; - TxtSizeMethod2 = false; - EnableTxtLOD = false; - FastTextureCRC = 0; - EmulateClear = false; - ForceScreenClear = false; - AccurateTextureMappingHack = 0; - NormalBlender = 0; - DisableBlender = false; - ForceDepthBuffer = false; - DisableObjBG = false; - FrameBufferOption = 0; - RenderToTextureOption = 0; - ScreenUpdateSettingHack = 0; - EnableHacksForGame = 0; - } - - [JsonIgnore] - [Description("Plugin Type")] - public PLUGINTYPE PluginType - { - get { return PLUGINTYPE.RICE; } - } - - public void FillPerGameHacks(GameInfo game) - { - if (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 GetPluginSettings() - { - //TODO: deal witn the game depedent settings - var dictionary = new Dictionary(); - var members = this.GetType().GetFields(); - foreach (var member in members) - { - var field = this.GetType().GetField(member.Name).GetValue(this); - dictionary.Add(member.Name, field); - } - - return dictionary; - } - - public int FrameBufferSetting { get; set; } - public int FrameBufferWriteBackControl { get; set; } - public int RenderToTexture { get; set; } - public int ScreenUpdateSetting { get; set; } - public int Mipmapping { get; set; } - public int FogMethod { get; set; } - public int ForceTextureFilter { get; set; } - public int TextureEnhancement { get; set; } - public int TextureEnhancementControl { get; set; } - public int TextureQuality { get; set; } - public int OpenGLDepthBufferSetting { get; set; } - public int MultiSampling { get; set; } - public int ColorQuality { get; set; } - public int OpenGLRenderSetting { get; set; } - public int AnisotropicFiltering { get; set; } - - public bool NormalAlphaBlender { get; set; } - public bool FastTextureLoading { get; set; } - public bool AccurateTextureMapping { get; set; } - public bool InN64Resolution { get; set; } - public bool SaveVRAM { get; set; } - public bool DoubleSizeForSmallTxtrBuf { get; set; } - public bool DefaultCombinerDisable { get; set; } - public bool EnableHacks { get; set; } - public bool WinFrameMode { get; set; } - public bool FullTMEMEmulation { get; set; } - public bool OpenGLVertexClipper { get; set; } - public bool EnableSSE { get; set; } - public bool EnableVertexShader { get; set; } - public bool SkipFrame { get; set; } - public bool TexRectOnly { get; set; } - public bool SmallTextureOnly { get; set; } - public bool LoadHiResCRCOnly { get; set; } - public bool LoadHiResTextures { get; set; } - public bool DumpTexturesToFiles { get; set; } - - public bool UseDefaultHacks { get; set; } - public bool DisableTextureCRC { get; set; } - public bool DisableCulling { get; set; } - public bool IncTexRectEdge { get; set; } - public bool ZHack { get; set; } - public bool TextureScaleHack { get; set; } - public bool PrimaryDepthHack { get; set; } - public bool Texture1Hack { get; set; } - public bool FastLoadTile { get; set; } - public bool UseSmallerTexture { get; set; } - public int VIWidth { get; set; } - public int VIHeight { get; set; } - public int UseCIWidthAndRatio { get; set; } - public int FullTMEM { get; set; } - public bool TxtSizeMethod2 { get; set; } - public bool EnableTxtLOD { get; set; } - public int FastTextureCRC { get; set; } - public bool EmulateClear { get; set; } - public bool ForceScreenClear { get; set; } - public int AccurateTextureMappingHack { get; set; } - public int NormalBlender { get; set; } - public bool DisableBlender { get; set; } - public bool ForceDepthBuffer { get; set; } - public bool DisableObjBG { get; set; } - public int FrameBufferOption { get; set; } - public int RenderToTextureOption { get; set; } - public int ScreenUpdateSettingHack { get; set; } - public int EnableHacksForGame { get; set; } - - public N64RicePluginSettings Clone() - { - return (N64RicePluginSettings)MemberwiseClone(); - } - } - - public class N64GlidePluginSettings : IPluginSettings - { - public N64GlidePluginSettings() - { - wfmode = 1; - wireframe = false; - card_id = 0; - flame_corona = false; - ucode = 2; - autodetect_ucode = true; - motionblur = false; - fb_read_always = false; - unk_as_red = false; - filter_cache = false; - fast_crc = false; - disable_auxbuf = false; - fbo = false; - noglsl = true; - noditheredalpha = true; - tex_filter = 0; - fb_render = false; - wrap_big_tex = false; - use_sts1_only = false; - soft_depth_compare = false; - PPL = false; - fb_optimize_write = false; - fb_optimize_texrect = true; - increase_texrect_edge = false; - increase_primdepth = false; - fb_ignore_previous = false; - fb_ignore_aux_copy = false; - fb_hires_buf_clear = true; - force_microcheck = false; - force_depth_compare = false; - fog = true; - fillcolor_fix = false; - fb_smart = false; - fb_read_alpha = false; - fb_get_info = false; - fb_hires = true; - fb_clear = false; - detect_cpu_write = false; - decrease_fillrect_edge = false; - buff_clear = true; - alt_tex_size = false; - UseDefaultHacks = true; - enable_hacks_for_game = 0; - swapmode = 1; - stipple_pattern = 1041204192; - stipple_mode = 2; - scale_y = 100000; - scale_x = 100000; - offset_y = 0; - offset_x = 0; - lodmode = 0; - fix_tex_coord = 0; - filtering = 1; - depth_bias = 20; - } - - [JsonIgnore] - public PLUGINTYPE PluginType - { - get { return PLUGINTYPE.GLIDE; } - } - - public void FillPerGameHacks(GameInfo game) - { - if (UseDefaultHacks) - { - alt_tex_size = game.GetBool("Glide_alt_tex_size", false); - buff_clear = game.GetBool("Glide_buff_clear", true); - decrease_fillrect_edge = game.GetBool("Glide_decrease_fillrect_edge", false); - detect_cpu_write = game.GetBool("Glide_detect_cpu_write", false); - fb_clear = game.GetBool("Glide_fb_clear", false); - fb_hires = game.GetBool("Glide_fb_clear", true); - fb_read_alpha = game.GetBool("Glide_fb_read_alpha", false); - fb_smart = game.GetBool("Glide_fb_smart", false); - fillcolor_fix = game.GetBool("Glide_fillcolor_fix", false); - fog = game.GetBool("Glide_fog", true); - force_depth_compare = game.GetBool("Glide_force_depth_compare", false); - force_microcheck = game.GetBool("Glide_force_microcheck", false); - fb_hires_buf_clear = game.GetBool("Glide_fb_hires_buf_clear", true); - fb_ignore_aux_copy = game.GetBool("Glide_fb_ignore_aux_copy", false); - fb_ignore_previous = game.GetBool("Glide_fb_ignore_previous", false); - increase_primdepth = game.GetBool("Glide_increase_primdepth", false); - increase_texrect_edge = game.GetBool("Glide_increase_texrect_edge", false); - fb_optimize_texrect = game.GetBool("Glide_fb_optimize_texrect", true); - fb_optimize_write = game.GetBool("Glide_fb_optimize_write", false); - PPL = game.GetBool("Glide_PPL", false); - soft_depth_compare = game.GetBool("Glide_soft_depth_compare", false); - use_sts1_only = game.GetBool("Glide_use_sts1_only", false); - wrap_big_tex = game.GetBool("Glide_wrap_big_tex", false); - - depth_bias = game.GetInt("Glide_depth_bias", 20); - filtering = game.GetInt("Glide_filtering", 1); - fix_tex_coord = game.GetInt("Glide_fix_tex_coord", 0); - lodmode = game.GetInt("Glide_lodmode", 0); - - stipple_mode = game.GetInt("Glide_stipple_mode", 2); - stipple_pattern = game.GetInt("Glide_stipple_pattern", 1041204192); - swapmode = game.GetInt("Glide_swapmode", 1); - enable_hacks_for_game = game.GetInt("Glide_enable_hacks_for_game", 0); - } - } - - public Dictionary GetPluginSettings() - { - //TODO: deal witn the game depedent settings - Dictionary dictionary = new Dictionary(); - System.Reflection.FieldInfo[] members = this.GetType().GetFields(); - foreach (System.Reflection.FieldInfo member in members) - { - object field = this.GetType().GetField(member.Name).GetValue(this); - dictionary.Add(member.Name, field); - } - - return dictionary; - } - - public int wfmode { get; set; } - public bool wireframe { get; set; } - public int card_id { get; set; } - public bool flame_corona { get; set; } - public int ucode { get; set; } - public bool autodetect_ucode { get; set; } - public bool motionblur { get; set; } - public bool fb_read_always { get; set; } - public bool unk_as_red { get; set; } - public bool filter_cache { get; set; } - public bool fast_crc { get; set; } - public bool disable_auxbuf { get; set; } - public bool fbo { get; set; } - public bool noglsl { get; set; } - public bool noditheredalpha { get; set; } - public int tex_filter { get; set; } - public bool fb_render { get; set; } - public bool wrap_big_tex { get; set; } - public bool use_sts1_only { get; set; } - public bool soft_depth_compare { get; set; } - public bool PPL { get; set; } - public bool fb_optimize_write { get; set; } - public bool fb_optimize_texrect { get; set; } - public bool increase_texrect_edge { get; set; } - public bool increase_primdepth { get; set; } - public bool fb_ignore_previous { get; set; } - public bool fb_ignore_aux_copy { get; set; } - public bool fb_hires_buf_clear { get; set; } - public bool force_microcheck { get; set; } - public bool force_depth_compare { get; set; } - public bool fog { get; set; } - public bool fillcolor_fix { get; set; } - public bool fb_smart { get; set; } - public bool fb_read_alpha { get; set; } - public bool fb_get_info { get; set; } - public bool fb_hires { get; set; } - public bool fb_clear { get; set; } - public bool detect_cpu_write { get; set; } - public bool decrease_fillrect_edge { get; set; } - public bool buff_clear { get; set; } - public bool alt_tex_size { get; set; } - public bool UseDefaultHacks { get; set; } - public int enable_hacks_for_game { get; set; } - public int swapmode { get; set; } - public int stipple_pattern { get; set; } - public int stipple_mode { get; set; } - public int scale_y { get; set; } - public int scale_x { get; set; } - public int offset_y { get; set; } - public int offset_x { get; set; } - public int lodmode { get; set; } - public int fix_tex_coord { get; set; } - public int filtering { get; set; } - public int depth_bias { get; set; } - - public N64GlidePluginSettings Clone() - { - return (N64GlidePluginSettings)MemberwiseClone(); - } - } - - public class N64Glide64mk2PluginSettings : IPluginSettings - { - public N64Glide64mk2PluginSettings() - { - wrpFBO = true; - card_id = 0; - use_sts1_only = false; - optimize_texrect = true; - increase_texrect_edge = false; - ignore_aux_copy = false; - hires_buf_clear = true; - force_microcheck = false; - fog = true; - fb_smart = false; - fb_read_alpha = false; - fb_hires = true; - detect_cpu_write = false; - decrease_fillrect_edge = false; - buff_clear = true; - alt_tex_size = false; - swapmode = 1; - stipple_pattern = 1041204192; - stipple_mode = 2; - lodmode = 0; - filtering = 0; - wrpAnisotropic = false; - correct_viewport = false; - force_calc_sphere = false; - pal230 = false; - texture_correction = true; - n64_z_scale = false; - old_style_adither = false; - zmode_compare_less = false; - adjust_aspect = true; - clip_zmax = true; - clip_zmin = false; - force_quad3d = false; - useless_is_useless = false; - fb_read_always = false; - fb_get_info = false; - fb_render = true; - aspectmode = 0; - fb_crc_mode = 1; - fast_crc = true; - UseDefaultHacks = true; - enable_hacks_for_game = 0; - read_back_to_screen = 0; - } - - [JsonIgnore] - public PLUGINTYPE PluginType - { - get { return PLUGINTYPE.GLIDE64MK2; } - } - - public void FillPerGameHacks(GameInfo game) - { - if (UseDefaultHacks) - { - use_sts1_only = game.GetBool("Glide64mk2_use_sts1_only", false); - optimize_texrect = game.GetBool("Glide64mk2_optimize_texrect", true); - increase_texrect_edge = game.GetBool("Glide64mk2_increase_texrect_edge", false); - ignore_aux_copy = game.GetBool("Glide64mk2_ignore_aux_copy", false); - hires_buf_clear = game.GetBool("Glide64mk2_hires_buf_clear", true); - force_microcheck = game.GetBool("Glide64mk2_force_microcheck", false); - fog = game.GetBool("Glide64mk2_fog", true); - fb_smart = game.GetBool("Glide64mk2_fb_smart", false); - fb_read_alpha = game.GetBool("Glide64mk2_fb_read_alpha", false); - fb_hires = game.GetBool("Glide64mk2_fb_hires", true); - detect_cpu_write = game.GetBool("Glide64mk2_detect_cpu_write", false); - decrease_fillrect_edge = game.GetBool("Glide64mk2_decrease_fillrect_edge", false); - buff_clear = game.GetBool("Glide64mk2_buff_clear", true); - alt_tex_size = game.GetBool("Glide64mk2_alt_tex_size", true); - swapmode = game.GetInt("Glide64mk2_swapmode", 1); - stipple_pattern = game.GetInt("Glide64mk2_stipple_pattern", 1041204192); - stipple_mode = game.GetInt("Glide64mk2_stipple_mode", 2); - lodmode = game.GetInt("Glide64mk2_lodmode", 0); - filtering = game.GetInt("Glide64mk2_filtering", 0); - correct_viewport = game.GetBool("Glide64mk2_correct_viewport", false); - force_calc_sphere = game.GetBool("Glide64mk2_force_calc_sphere", false); - pal230 = game.GetBool("Glide64mk2_pal230", false); - texture_correction = game.GetBool("Glide64mk2_texture_correction", true); - n64_z_scale = game.GetBool("Glide64mk2_n64_z_scale", false); - old_style_adither = game.GetBool("Glide64mk2_old_style_adither", false); - zmode_compare_less = game.GetBool("Glide64mk2_zmode_compare_less", false); - adjust_aspect = game.GetBool("Glide64mk2_adjust_aspect", true); - clip_zmax = game.GetBool("Glide64mk2_clip_zmax", true); - clip_zmin = game.GetBool("Glide64mk2_clip_zmin", false); - force_quad3d = game.GetBool("Glide64mk2_force_quad3d", false); - useless_is_useless = game.GetBool("Glide64mk2_useless_is_useless", false); - fb_read_always = game.GetBool("Glide64mk2_fb_read_always", false); - aspectmode = game.GetInt("Glide64mk2_aspectmode", 0); - fb_crc_mode = game.GetInt("Glide64mk2_fb_crc_mode", 1); - enable_hacks_for_game = game.GetInt("Glide64mk2_enable_hacks_for_game", 0); - read_back_to_screen = game.GetInt("Glide64mk2_read_back_to_screen", 0); - fast_crc = game.GetBool("Glide64mk2_fast_crc", true); - } - } - - public Dictionary GetPluginSettings() - { - //TODO: deal witn the game depedent settings - Dictionary dictionary = new Dictionary(); - System.Reflection.FieldInfo[] members = this.GetType().GetFields(); - foreach (System.Reflection.FieldInfo member in members) - { - object field = this.GetType().GetField(member.Name).GetValue(this); - dictionary.Add(member.Name, field); - } - return dictionary; - } - - public bool wrpFBO { get; set; } - public int card_id { get; set; } - public bool use_sts1_only { get; set; } - public bool optimize_texrect { get; set; } - public bool increase_texrect_edge { get; set; } - public bool ignore_aux_copy { get; set; } - public bool hires_buf_clear { get; set; } - public bool force_microcheck { get; set; } - public bool fog { get; set; } - public bool fb_smart { get; set; } - public bool fb_read_alpha { get; set; } - public bool fb_hires { get; set; } - public bool detect_cpu_write { get; set; } - public bool decrease_fillrect_edge { get; set; } - public bool buff_clear { get; set; } - public bool alt_tex_size { get; set; } - public int swapmode { get; set; } - public int stipple_pattern { get; set; } - public int stipple_mode { get; set; } - public int lodmode { get; set; } - public int filtering { get; set; } - public bool wrpAnisotropic { get; set; } - public bool correct_viewport { get; set; } - public bool force_calc_sphere { get; set; } - public bool pal230 { get; set; } - public bool texture_correction { get; set; } - public bool n64_z_scale { get; set; } - public bool old_style_adither { get; set; } - public bool zmode_compare_less { get; set; } - public bool adjust_aspect { get; set; } - public bool clip_zmax { get; set; } - public bool clip_zmin { get; set; } - public bool force_quad3d { get; set; } - public bool useless_is_useless { get; set; } - public bool fb_read_always { get; set; } - public bool fb_get_info { get; set; } - public bool fb_render { get; set; } - public int aspectmode { get; set; } - public int fb_crc_mode { get; set; } - public bool fast_crc { get; set; } - public bool UseDefaultHacks { get; set; } - public int enable_hacks_for_game { get; set; } - public int read_back_to_screen { get; set; } - - public N64Glide64mk2PluginSettings Clone() - { - return (N64Glide64mk2PluginSettings)MemberwiseClone(); - } - } - - public class N64JaboPluginSettings : IPluginSettings - { - public N64JaboPluginSettings() - { - anisotropic_level = ANISOTROPIC_FILTERING_LEVEL.four_times; - brightness = 100; - super2xsal = false; - texture_filter = false; - adjust_aspect_ratio = false; - legacy_pixel_pipeline = false; - alpha_blending = false; - wireframe = false; - direct3d_transformation_pipeline = false; - z_compare = false; - copy_framebuffer = false; - resolution_width = -1; - resolution_height = -1; - clear_mode = DIRECT3D_CLEAR_MODE.def; - } - - [JsonIgnore] - public PLUGINTYPE PluginType - { - get { return PLUGINTYPE.JABO; } - } - - public void FillPerGameHacks(GameInfo game) - { - - } - - public Dictionary GetPluginSettings() - { - //TODO: deal witn the game depedent settings - var dictionary = new Dictionary(); - var members = this.GetType().GetFields(); - foreach (var member in members) - { - var field = this.GetType().GetField(member.Name).GetValue(this); - dictionary.Add(member.Name, field); - } - - return dictionary; - } - - public enum ANISOTROPIC_FILTERING_LEVEL - { - [Description("Off")] - off = 0, - - [Description("2X")] - two_times = 1, - - [Description("4X")] - four_times = 2, - - [Description("8X")] - eight_times = 3, - - [Description("16X")] - sixteen_times = 4 - } - - [DefaultValue(ANISOTROPIC_FILTERING_LEVEL.four_times)] - [Description("Anisotropic filtering level")] - //[DisplayName("Anisotropic filtering")] - public ANISOTROPIC_FILTERING_LEVEL anisotropic_level { get; set; } - - [DefaultValue(100)] - [Description("Brightness level, 100%-190%")] - //[DisplayName("Brightness")] - public int brightness { get; set; } - - [DefaultValue(false)] - [Description("Enables Super2xSal textures")] - //[DisplayName("Super2xSal textures")] - public bool super2xsal { get; set; } - - [DefaultValue(false)] - [Description("Always use texture filter")] - //[DisplayName("Always use texture filter")] - public bool texture_filter { get; set; } - - [DefaultValue(false)] - [Description("Adjust game aspect ratio to match yours")] - //[DisplayName("Adjust game aspect ratio to match yours")] - public bool adjust_aspect_ratio { get; set; } - - [DefaultValue(false)] - [Description("Use legacy pixel pipeline")] - //[DisplayName("Use legacy pixel pipeline")] - public bool legacy_pixel_pipeline { get; set; } - - [DefaultValue(false)] - [Description("Force alpha blending")] - //[DisplayName("Force alpha blending")] - public bool alpha_blending { get; set; } - - [DefaultValue(false)] - [Description("Wireframe rendering")] - //[DisplayName("Wireframe rendering")] - public bool wireframe { get; set; } - - [DefaultValue(false)] - [Description("Use Direct3D transformation pipeline")] - //[DisplayName("Use Direct3D transformation pipeline")] - public bool direct3d_transformation_pipeline { get; set; } - - [DefaultValue(false)] - [Description("Force Z Compare")] - //[DisplayName("Force Z Compare")] - public bool z_compare { get; set; } - - [DefaultValue(false)] - [Description("Copy framebuffer to RDRAM")] - //[DisplayName("Copy framebuffer to RDRAM")] - public bool copy_framebuffer { get; set; } - - [DefaultValue(-1)] - [Description("Emulated Width")] - //[DisplayName("Emulated Width")] - public int resolution_width { get; set; } - - [DefaultValue(-1)] - [Description("Emulated Height")] - //[DisplayName("Emulated Height")] - public int resolution_height { get; set; } - - public enum DIRECT3D_CLEAR_MODE - { - [Description("Default")] - def = 0, - - [Description("Only Per Frame")] - per_frame = 1, - - [Description("Always")] - always = 2 - } - [DefaultValue(DIRECT3D_CLEAR_MODE.def)] - [Description("Direct3D Clear Mode")] - //[DisplayName("Direct3D Clear Mode")] - public DIRECT3D_CLEAR_MODE clear_mode { get; set; } - - public N64JaboPluginSettings Clone() - { - return (N64JaboPluginSettings)MemberwiseClone(); - } - } - public class N64ControllerSettings { /// diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusCoreApi.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusCoreApi.cs index 316719dfe9..1e89af35dc 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusCoreApi.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusCoreApi.cs @@ -475,15 +475,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64.NativeApi public void set_video_parameters(VideoPluginSettings video_settings) { IntPtr video_plugin_section = IntPtr.Zero; - if (video_settings.Plugin == PLUGINTYPE.RICE) + if (video_settings.Plugin == PluginType.RICE) { m64pConfigOpenSection("Video-Rice", ref video_plugin_section); } - else if (video_settings.Plugin == PLUGINTYPE.GLIDE) + else if (video_settings.Plugin == PluginType.GLIDE) { m64pConfigOpenSection("Video-Glide64", ref video_plugin_section); } - else if (video_settings.Plugin == PLUGINTYPE.GLIDE64MK2) + else if (video_settings.Plugin == PluginType.GLIDE64MK2) { m64pConfigOpenSection("Video-Glide64mk2", ref video_plugin_section); } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusVideoApi.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusVideoApi.cs index 1f63dd3991..14bcbcf9ce 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusVideoApi.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI/mupen64plusVideoApi.cs @@ -47,16 +47,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64.NativeApi switch (settings.Plugin) { default: - case PLUGINTYPE.RICE: + case PluginType.RICE: videoplugin = "mupen64plus-video-rice.dll"; break; - case PLUGINTYPE.GLIDE: + case PluginType.GLIDE: videoplugin = "mupen64plus-video-glide64.dll"; break; - case PLUGINTYPE.GLIDE64MK2: + case PluginType.GLIDE64MK2: videoplugin = "mupen64plus-video-glide64mk2.dll"; break; - case PLUGINTYPE.JABO: + case PluginType.JABO: videoplugin = "mupen64plus-video-jabo.dll"; break; } @@ -114,7 +114,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64.NativeApi public class VideoPluginSettings { - public PLUGINTYPE Plugin; + public PluginType Plugin; //public Dictionary IntParameters = new Dictionary(); //public Dictionary StringParameters = new Dictionary(); @@ -122,7 +122,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64.NativeApi public int Height; public int Width; - public VideoPluginSettings(PLUGINTYPE Plugin, int Width, int Height) + public VideoPluginSettings(PluginType Plugin, int Width, int Height) { this.Plugin = Plugin; this.Width = Width;